首页 > 代码库 > shell文本过滤编程(三):awk之条件判断
shell文本过滤编程(三):awk之条件判断
【版权声明:转载请保留出处:blog.csdn.net/gentleliu。Mail:shallnew at 163 dot com】
在之前grep章节中用到很多正则表达式,这一节将在awk条件操作中使用正则表达式。awk 允许使用正则表达式,根据正则表达式是否匹配当前行来选择执行独立代码块。
下面先给出awk的条件操作符:
< 小于
<= 小于等于
== 等于
!= 不等于
> 大于
>= 大于等于
~ 匹配正则表达式
!~ 不匹配正则表达式
这一节继续使用上一节操作文件
1. 匹配
我们如果想筛选只符合条件(比如只要组名为aln)的行,可以这样写:
2. 精确匹配
如果要精确匹配,可以使用==操作符。 例如:
3. 大于
下面示例使用如下被操作文件:
4. 行首匹配
&& AND :语句两边必须同时匹配为真。
|| OR:语句两边同时或其中一边匹配为真。
! 非求逆
5. 求与:
在之前grep章节中用到很多正则表达式,这一节将在awk条件操作中使用正则表达式。awk 允许使用正则表达式,根据正则表达式是否匹配当前行来选择执行独立代码块。
下面先给出awk的条件操作符:
< 小于
<= 小于等于
== 等于
!= 不等于
> 大于
>= 大于等于
~ 匹配正则表达式
!~ 不匹配正则表达式
这一节继续使用上一节操作文件
1. 匹配
我们如果想筛选只符合条件(比如只要组名为aln)的行,可以这样写:
# # awk '$1~/aln/{print}' group_file1 aln x 1001 # awk'/aln/{print}' group_file1 aln x 1001 # awk '{if ($1 ~/aln/)print}' group_file1 aln x 1001 # awk '$1~/aln/'group_file1 //没有具体动作(如print),可以不用花括号,缺省动作是打印所有匹配记录。 aln x 1001上面四种方法都是打印第一个域包含aln的行,同理!~操作符号使用方法相同。
2. 精确匹配
如果要精确匹配,可以使用==操作符。 例如:
# awk '$3 =="984"{print}' group_file1 vboxusers x 984allen # awk '{if($3=="984")print}' group_file1 vboxusers x 984allen # awk'$3=="984"' group_file1 vboxusers x 984allen #!=操作符号使用类似。
3. 大于
下面示例使用如下被操作文件:
# catgroup_file2 wireshark x 987123 usbmon x 986 999 jackuser x 985 985 vboxusers x 9841003 allen aln x 1001 787以下示例输出满足$3 > $4的行的组名称:
# awk '{if($3>$4)print $1}' group_file2 wireshark aln # awk'$3>$4{print $1}' group_file2 wireshark aln操作符号<=、>、>=使用类似。
4. 行首匹配
# awk'$1~/^....user/' group_file2 jackuser x 985985 vboxusers x 9841003 allen # awk '{if($1~/^....user/)print}' group_file2 jackuser x 985985 vboxusers x 9841003 allenawk 还允许使用布尔运算符 "||"(逻辑与)和"&&"(逻辑或),以便创建更复合布尔表达式,复合表达式即为模式间通过使用下述各表达式互相结合起来的表达式:
&& AND :语句两边必须同时匹配为真。
|| OR:语句两边同时或其中一边匹配为真。
! 非求逆
5. 求与:
# awk'$1~/^....user/ && $3==985' group_file2 jackuser x 985985 # awk '{if($1~/^....user/ && $3 == 985)print}' group_file2 jackuser x 9859856. 求或
# awk '{if($1~/^....user/ || $3 == 1001)print}' group_file2 jackuser x 985985 vboxusers x 9841003 allen aln x 1001 7877. 求非
# awk'!($1~/^....user/)' group_file2 wireshark x 987123 usbmon x 986 999 aln x 1001 787
shell文本过滤编程(三):awk之条件判断
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。