AIX下AWK语言中使用正则表达式


AIX下AWK语言中使用正则表达式
 
[plain]   www.2cto.com  
在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  
 
--the end--

相关内容

    暂无相关文章