歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

AIX下AWK語言中使用正則表達式

在awk命令中使用正則表達式 
awk中可以使用正則表達式,元字符如下: 
\,^,.,[],|,(),*,+,? 
+:匹配一個或多個字符 
?:匹配模式出現頻率,/XY?Z/匹配XYZ,YZ 
 
條件操作符 
操作符                描述 
———————————    ——————————————— 
    <              小於 
    <=                小於等於 
    ==                等於 
    !=                不等於 
    >=                大於等於 
    ~                  匹配正則表達式 
    !~                不匹配正則表達式 
 
1.匹配 
grade.txt文件中,第四列的包含Brown的行: 
awk '{if($4~/Brown/) print $0}' grade.txt 
J.Troll    07/99  4842  Brown-3  12  26  26 
L.Tansley  05/99  4712  Brown-2  12  30  28 
只要包含Brown,就打印數據: 
awk '$0 ~ /Brown/' grade.txt 
J.Troll    07/99  4842  Brown-3  12  26  26 
L.Tansley  05/99  4712  Brown-2  12  30  28 
 
2.精確匹配 
打印第三列包含42的行: 
awk '{if($3~/42/) print $0}' grade.txt 
J.Troll    07/99  4842  Brown-3  12  26  26 
打印第三列包含48的行: 
awk '$3==48 {print $0}' grade.txt 
P.Bunny    02/99  48    Yello    12  35  28 
 
3.不匹配 
打印第三列不包含48的行: 
awk '$3!~48 {print $0}' grade.txt 
L.Tansley  05/99  4712  Brown-2  12  30  28 
查看所有的行: 
pg 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    Yello    12  35  28 
J.Troll    07/99  4842  Brown-3  12  26  26 
L.Tansley  05/99  4712  Brown-2  12  30  28 
打印不包含Brown的行: 
awk '$0 !~/Brown/' 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    Yello    12  35  28 
打印第四個域不包含"Brown-2"的行: 
awk '$4 != "Brown-2" {print $0}' 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    Yello    12  35  28 
J.Troll    07/99  4842  Brown-3  12  26  26 
 
4.大於 
awk '{if($6 > $7) print $1}' grade.txt 
P.Bunny 
L.Tansley 
 
5.小於 
awk '{if( $6 < $7 ) print $0}' grade.txt 
M.Tansley  05/99  48311  Green    8    40  44 
J.Lulu    06/99  48317  green    9    24  26 
 
6.大小寫 
awk '/[Gg]reen/' grade.txt 
M.Tansley  05/99  48311  Green    8    40  44 
J.Lulu    06/99  48317  green    9    24  26 
 
7.任意字符 
行首第四個字符為a的行 
awk '$1 ~/^...a/' grade.txt 
M.Tansley  05/99  48311  Green    8    40  44 
L.Tansley  05/99  4712  Brown-2  12  30  28 
 
8.或關系匹配 
行中包含Yellow或者Brown: 
awk '$0 ~/(Yellow|Brown)/' grade.txt 
J.Troll    07/99  4842  Brown-3  12  26  26 
L.Tansley  05/99  4712  Brown-2  12  30  28 
行中包含G(g)reen: 
awk '$0 ~/(G|g)reen/' grade.txt 
M.Tansley  05/99  48311  Green    8    40  44 
J.Lulu    06/99  48317  green    9    24  26 
 
9.行首:^ 
 
10.&&  and 
awk '{if ($1=="P.Bunny" && $4=="Yello") print $0}' grade.txt 
P.Bunny    02/99  48    Yello    12  35  28 
 
11.||  or 
awk '{if ($4=="Yello" || $4~/Brown/) print $0}' grade.txt 
P.Bunny    02/99  48    Yello    12  35  28 
J.Troll    07/99  4842  Brown-3  12  26  26 
L.Tansley  05/99  4712  Brown-2  12  30  28 
 
12.! 
awk '$0 !~/2/' grade.txt 
M.Tansley  05/99  48311  Green    8    40  44 
Copyright © Linux教程網 All Rights Reserved