shell文本过滤编程(三):awk之条件判断

【版权声明:转载请保留出处:blog.csdn.net/gentleliu。Mail:shallnew at 163 dot com】

在之前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 allen
 

awk 还允许使用布尔运算符 "||"(逻辑与)和"&&"(逻辑或),以便创建更复合布尔表达式,复合表达式即为模式间通过使用下述各表达式互相结合起来的表达式:

&& AND :语句两边必须同时匹配为真。

|| OR:语句两边同时或其中一边匹配为真。

! 非求逆

5. 求与:

# awk'$1~/^....user/ && $3==985' group_file2
jackuser x 985985
# awk '{if($1~/^....user/ && $3 == 985)print}' group_file2
jackuser x 985985

6. 求或

# awk '{if($1~/^....user/ || $3 == 1001)print}' group_file2
jackuser x 985985
vboxusers x 9841003 allen
aln x 1001 787

7. 求非

# awk'!($1~/^....user/)' group_file2
wireshark x 987123
usbmon x 986 999
aln x 1001 787

时间: 2024-10-16 20:35:23

shell文本过滤编程(三):awk之条件判断的相关文章

shell编程(四)--- 条件判断之if判断

单分支if语句 if 判断条件;then     statement1     statement2 fi 双分支if语句 if 判断条件;then     statement1     statement2     -- else     statement3     statement4     -- fi 多分支if语句 if 判断条件1;then     statement1     statement2     -- elif 判断条件2;then     statement3    

shell编程(五)--- 条件判断之算术运算

方法1:let 算术运算表达式 示例1: [[email protected] Scripts]# A=2 [[email protected] Scripts]# B=3 [[email protected] Scripts]# let C=$A*$B [[email protected] Scripts]# echo $C 6 [[email protected] Scripts]# 方法2:$[算术运算表达式] 示例2: [[email protected] Scripts]# echo 

Linux学习笔记--bash脚本编程之二、条件判断

 bash脚本编程之二.条件判断 条件判断: 如果用户不存在 添加用户,给密码并显示添加成功: 否则 显示用户已存在,没有添加 bash中如何实现条件判断? 整数测试 字符测试 文件测试 条件测试的表达式:     [expression]     [[expression]]     test expression 整数比较: -eq:测试两个整数是否相等:比如 $A -eq $B     -ne:测试两个整数是否不等:不等,为真:相等,为假:     -qt:测试一个数是否大于另一个数:大于

shell文本过滤编程(六):awk之循环判断及数组

[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 与上一节printf一样,awk的循环判断和C语言的循环判断语法极其类似. 1. While循环 #!/bin/sh awk ' BEGIN { ORS="" } { i=0 while (i < NF) { printf("* ") i++ } print "\n" } ' group_file1 首先,

shell文本过滤编程(二):awk之基础

[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 上一节说到了grep命令,grep命令主要用在获取符合规则的行信息.本节要讲的awk在对某文件或字符串中获取指定文本域有较强大的功能. a w k语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息. a w k抽取信息后,才能进行其他文本操作.完整的 a w k脚本通常用来格式化文本文件中的信息. 在命令行上调用awk命令式最常用的使用awk的方式:

shell文本过滤编程(四):awk内置变量及一般变量

[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] awk有许多内置变量用来设置环境信息.这些变量可以被改变.下面是awk内置变量: ARGC 命令行参数个数 ARGV 命令行参数排列 ENVIRON 支持队列中系统环境变量的使用 FILENAME  a w k浏览的文件名 FNR 浏览文件的记录数 FS 设置输入域分隔符,等价于命令行 - F选项 NF 浏览记录的域个数 NR 已读的记录数 OFS 输出域分隔符

【Linux学习 009】脚本编程之变量和条件判断

一.Bash环境变量 bash中变量有四种种类型:环境变量.本地变量(局部变量).位置变量.特殊变量. 1.环境变量 环境变量作用范围最广,所有子bash进程都能够访问环境变量中的值,定义环境变量的方法是使用export关键字.举例: [email protected]:~$ export A=abc [email protected]:~$ echo $A abc [email protected]:~$ 2.本地变量 本地变量作用范围是当前bash,子bash访问不到父bash中定义的变量,

Python全栈自动化系列之Python编程基础(if条件判断)

一.if语句 1)单个if语句用法: 语法: if 条件: 条件成立执行的代码块 else: 条件不成立执行的代码块 例如: 需求点:用户输入考试成绩,请判断是否及格? num = int(input("请输入成绩:")) if num >= 60: print("考试及格") else: print("考试不及格")运行结果: 2)if-elif语句用法:语法: if 条件1: # 条件1成立执行的代码 elif 条件2: # 条件2成立

shell文本过滤编程(八):awk之内置函数

[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 这一节来见识一下a w k许多强大的字符串函数及其使用方法. 1. sub 和 gsub函数: 用法:sub( Ere, Repl, [ str ] ) gsub( Ere, Repl, [ str ] ) 在第三个参数给出字符串中查找满足Ere 参数指定的扩展正则表达式的字符串,并使用第二个参数替换之.如果未指定 In 参数,缺省值是整个记录($0 记录变量)