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:匹配任意非單詞字符。

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