侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

awk学习记录

2023-09-26 星期二 / 0 评论 / 0 点赞 / 53 阅读 / 3176 字

1.awk抽取字段练习 awk脚本由各种操作和模式组成,根据分隔符(-F选项),默认为空格,读取的内容依次放置到对应的域中,一行一行记录读取,直到文件尾 test.txt源文件内容 11111111

 

1.awk抽取字段练习

  awk脚本由各种操作和模式组成,根据分隔符(-F选项),默认为空格,读取的内容依次放置到对应的域中,一行一行记录读取,直到文件尾

test.txt源文件内容

11111111111111:a2: a3: a4222222222222: b2: b3: b4333333333333:  c2 :c3: c44444444444444: d2: d3: d4: d5

A.执行带分隔符的命令。(输出第一个和第四个字段)

[root@iZ94ela31u0Z 4]# awk -F : '{print $1,$4}' test.txt 11111111111111  a4222222222222  b4333333333333  c44444444444444  d4

B.执行不带分隔符的命令。(默认空格分隔,同样输出第一个和第四个字段)

源文件内容

[root@iZ94ela31u0Z 4]# cat test2.txt 11111111111111 a2 a3 a4222222222222 b2 b3 b4333333333333  c2 c3 c44444444444444 d2 d3 d4 d5

执行后

[root@iZ94ela31u0Z 4]# awk '{print  $1,$4}' test2.txt 11111111111111 a4222222222222 b4333333333333 c44444444444444 d4

2.域和记录:

awk执行时,其浏览标记为$1,$2...$n,这种方法称为域标记。使用$1,$3表示参照第1和第3域,注意这里使用逗号分隔域,使用$0表示使用所有域。例如:

打印所有域并把结果重定向到sav.txt中

[root@iZ94ela31u0Z 4]# awk '{print $0}' test.txt  > sav.txt[root@iZ94ela31u0Z 4]# cat sav.txt 11111111111111:a2: a3: a4222222222222: b2: b3: b4333333333333:  c2 :c3: c44444444444444: d2: d3: d4: d5

 和上例相似,不同的是将在屏幕上显示出来

[root@iZ94ela31u0Z 4]# awk '{print $0 }' test.txt sav.txt 11111111111111:a2: a3: a4222222222222: b2: b3: b4333333333333:  c2 :c3: c44444444444444: d2: d3: d4: d5

表示打信息头,即输入的内容的第一行前加上"NAME  GRADE/n----",同时内容以tab分开

[root@iZ94ela31u0Z 4]# awk 'BEGIN {print "NAME GRADE/n----"}{print $1"/t"$4}' test2.txtNAME GRADE----11111111111111	a4222222222222	b4333333333333	c44444444444444	d4

同时打印信息头和信息尾

[root@iZ94ela31u0Z 4]# awk 'BEGIN {print "tianjin"} { print $1} END{pint "END"} ' test2.txttianjin111111111111112222222222223333333333334444444444444

3.条件操作符:

    <、<=、==、!=、>=、~匹配正则表达式、!~不匹配正则表达式

匹配:awk '{if ($4~/d4/) print $0}' test2.txt 表示如果第四个域包含d4,就打印整条

[root@iZ94ela31u0Z 4]# awk '{if($4~/d4/) print $0}' test2.txt4444444444444 d2 d3 d4 d5

精确匹配,只打印第3域等于"d3"的记录

[root@iZ94ela31u0Z 4]# awk '$3=="d3" {print $0}' test2.txt4444444444444 d2 d3 d4 d5

 不匹配:  打印整条不包含d3的记录

[root@iZ94ela31u0Z 4]# awk '$0 !~ /d3/' test2.txt 11111111111111 a2 a3 a4222222222222 b2 b3 b4333333333333  c2 c3 c4

 

广告 广告

评论区