您的位置:首页 > 其它

awk学习记录

2017-08-07 00:00 344 查看
1.awk抽取字段练习

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

test.txt源文件内容

11111111111111:a2: a3: a4
222222222222: b2: b3: b4
333333333333:  c2 :c3: c4
4444444444444: d2: d3: d4: d5

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

[root@iZ94ela31u0Z 4]# awk -F : '{print $1,$4}' test.txt
11111111111111  a4
222222222222  b4
333333333333  c4
4444444444444  d4

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

源文件内容

[root@iZ94ela31u0Z 4]# cat test2.txt
11111111111111 a2 a3 a4
222222222222 b2 b3 b4
333333333333  c2 c3 c4
4444444444444 d2 d3 d4 d5

执行后

[root@iZ94ela31u0Z 4]# awk '{print  $1,$4}' test2.txt
11111111111111 a4
222222222222 b4
333333333333 c4
4444444444444 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: a4 222222222222: b2: b3: b4 333333333333: c2 :c3: c4 4444444444444: d2: d3: d4: d5

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

[root@iZ94ela31u0Z 4]# awk '{print $0 }' test.txt sav.txt
11111111111111:a2: a3: a4 222222222222: b2: b3: b4 333333333333: c2 :c3: c4 4444444444444: d2: d3: d4: d5

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

[root@iZ94ela31u0Z 4]# awk 'BEGIN {print "NAME GRADE\n----"}{print $1"\t"$4}' test2.txt
NAME GRADE
----
11111111111111	a4
222222222222	b4
333333333333	c4
4444444444444	d4

同时打印信息头和信息尾

[root@iZ94ela31u0Z 4]# awk 'BEGIN {print "tianjin"} { print $1} END{pint "END"} ' test2.txt
tianjin
11111111111111
222222222222
333333333333
4444444444444


3.条件操作符:

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

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

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

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

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

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

[root@iZ94ela31u0Z 4]# awk '$0 !~ /d3/' test2.txt
11111111111111 a2 a3 a4
222222222222 b2 b3 b4
333333333333  c2 c3 c4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  awk