您的位置:首页 > 其它

awk 实例练习(一)

2016-04-30 18:43 309 查看
前一篇学习了awk的基本知识,现在来做一些练习加深一下印象。
假设我们有这样一个待处理的文件"grade.txt":

[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
J.Lulu 06/99 48317 green 9
24 26

P.Bunny 02/99 48 Yellow 12 35 28

J.Troll 07/99 4842 Brown-3 12 26 26

L.Tansley 05/99 4712 Brown-2 12 30 28
[align=left] [/align]
[align=left]#打印整个文件[/align]

[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
[align=left]$ awk '{print $0}' grade.txt[/align]
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]
[align=left]L.Tansley 05/99 4712 Brown-2 12 30 28[/align]

[align=left]#打印第一和第四个域[/align]

[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'{print $1,$4}' grade.txt
[align=left]M.Tansley Green[/align]
[align=left]J.Lulu green[/align]
[align=left]P.Bunny Yellow[/align]
[align=left]J.Troll Brown-3[/align]
[align=left]L.Tansley Brown-2[/align]

[align=left] [/align]
[align=left]#打印表头[/align]

[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'BEGIN {print "Name Belt\n---------------------------"}
[align=left]> {print $1"\t"$4}' grade.txt[/align]
[align=left]Name Belt[/align]
[align=left]---------------------------[/align]
[align=left]M.Tansley Green[/align]
[align=left]J.Lulu green[/align]
[align=left]P.Bunny Yellow[/align]
[align=left]J.Troll Brown-3[/align]
[align=left]L.Tansley Brown-2[/align]

[align=left]正则表达式相关:[/align]
[align=left] [/align]
为使一域号匹配正则表达式,使用符号‘~’后紧跟正则表达式,也可以用
i f语句。awk中if后面的条件用()括起来。
#下面代码打印$4 包含 Brown
的行

[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$4~/Brown/ {print $0}' grade.txt
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]
[align=left]L.Tansley 05/99 4712 Brown-2 12 30 28[/align]

[align=left] [/align]
[align=left]#非精确匹配[/align]

[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$3 ~/48/ {print $0}' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]

[align=left] [/align]
[align=left]#精确匹配[/align]

[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$3=="48" {print $0}' grade.txt
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]

[align=left] [/align]
[align=left] [/align]
[align=left] [/align]

#不匹配 使用
‘!~’
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$0 !~ /Brown/' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]

[align=left] [/align]

[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$4 != "Brown-2" {print $0}' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]

[align=left] [/align]
[align=left]#小于[/align]

[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$6 < $7 {print $0 "$1 Try better at the next comp"}' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44$1 Try better at the next comp[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26$1 Try better at the next comp[/align]

[align=left] [/align]
[align=left]#设置大小写[/align]

[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'/[Gg]reen/' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]

[align=left] [/align]
[align=left]#匹配第一个域的第三个字符是‘a’[/align]

[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$1 ~/^...a/' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]L.Tansley 05/99 4712 Brown-2 12 30 28[/align]

[align=left] [/align]
[align=left]#'或'匹配,使用 ‘|’ ,需使用括号括起来[/align]

[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$0 ~/(Yellow|Brown)/' grade.txt
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]
[align=left]L.Tansley 05/99 4712 Brown-2 12 30 28[/align]

[align=left] [/align]

make it simple, make it happen
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: