awk练习

awk练习

[root@yang test]# cat grade.txt 
M.Tansley 05/99 48311 Green 8 40 44
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
  • 1、打印整个文件
[root@yang test]# awk '{print}' grade.txt 
M.Tansley 05/99 48311 Green 8 40 44
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

  • 2、打印第一和第四个列
[root@yang test]# awk '{print $1","$4}' grade.txt 
M.Tansley,Green
J.Lulu,green
P.Bunny,Yellow
J.Troll,Brown-3
L.Tansley,Brown-2

  • 3、打印表头Name Belt,然后显示文档第一列和第四列
[root@yang test]# awk 'BEGIN{print "Name Belt"}{print $1","$4}' grade.txt 
Name Belt
M.Tansley,Green
J.Lulu,green
P.Bunny,Yellow
J.Troll,Brown-3
L.Tansley,Brown-2

  • 4、打印第四列包含Brown的行
[root@yang test]# awk '$4~/Brown/{print}' grade.txt 
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28

  • 5、打印第三列包含48的行
[root@yang test]# awk '$3~/48/{print}' grade.txt 
M.Tansley 05/99 48311 Green 8 40 44
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

  • 6、显示第三列是48的行
[root@yang test]# awk '$3=="48"{print}' grade.txt 
P.Bunny 02/99 48 Yellow 12 35 28

  • 7、显示第7列不超过40的行
[root@yang test]# awk '$7<="40"{print}' grade.txt 
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

  • 8、打印第四列不是Brown-2的行
[root@yang test]# awk '$4!="Brown-2"{print}' grade.txt 
M.Tansley 05/99 48311 Green 8 40 44
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


  • 9、当第六列大于第七列时,显示:$6大于$7
[root@yang test]# awk '$6>$7{print $6"大于"$7}' grade.txt 
35大于28
30大于28


  • 10、当第一列的第四个字符是 a 时,显示该行
[root@yang test]# awk '$1~/^...a/{print}' grade.txt 
M.Tansley 05/99 48311 Green 8 40 44
L.Tansley 05/99 4712 Brown-2 12 30 28


  • 11、显示包含Yellow或Brown的行(提示:$0表示所有列)
[root@yang test]# awk '$0~/Yellow|Brown/{print}' grade.txt 
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


awk支持的正则表达式语法简要说明

正则表达式是和egrep的差不多的,支持扩展的正则表达式语法。常用的由以下字符组成:
.:配包含换行符在内的任意字符;
^:匹配字符串开始的字符;
$:匹配字符串的结束;
[abc…]:字符串列表,匹配abc…中任意字符;
[^abc…]:字符列表取反,匹配除了abc…之外的任意字符;
r1|r2:要么匹配r1,要么匹配r2;
r1r2:匹配r1后边跟着r2,这种属于级联;
r+:匹配r 一次或多次;
r*:匹配r 0次或多次;
r?:匹配r 0次或1次;
®:分组用法;
r{n}:匹配r重复n次;
r{n,}:匹配r至少重复n次;
r{n,m}:匹配r至少重复n此,至多重复m此;
\y: 匹配单词开头或结尾的空串;
\B:匹配单词内的空串;
<: 匹配单词开始的空串。(词首锚定)
>: 匹配单词结尾的空串。(词尾锚定)
\s:匹配任意空白字符;
\S:匹配任意非空白字符;
\w:匹配任意单词组成字符(信件字符,数字,或下划线)
\W:匹配任意非单词字符。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章