Linux学习总结(二十一)正则三剑客之awk

awk 也是流式编辑器,它比sed的功能更强大

1.截取文档中的某段

awk -F ':' '{print $1}' /etc/passwd |head -2
-F 指定分割符,不指定以空格或者tab为分隔符
print 为打印动作
$1 为第一字段, $2 为第二字段,依次类推,$0标示整行
那么打印整个文档就是
awk '{print $0}' /etc/passwd
print 还可以打印自定义的内容,要用双引号括起来
awk -F':' '{print $1"#"$2"#"$3"#"$4}' /etc/passwd |head -2
Linux学习总结(二十一)正则三剑客之awk
意思是以冒号分割打印前四段,每段用#号分开

2.匹配字符或字符串

awk '/root/' /etc/passwd 匹配含有root的行,该用法跟sed 类似
让某个字段去匹配
awk -F ':' '$1 ~/da/' /etc/passwd
Linux学习总结(二十一)正则三剑客之awk
awk还可以多次匹配,只打印所匹配的段
awk -F ':' '/root/ {print $1 $3} /test/ {print $1 $3}' /etc/passwd
Linux学习总结(二十一)正则三剑客之awk
意思是先找出带有关键词root ,test的行,再打印出这些行指定的字段
Linux学习总结(二十一)正则三剑客之awk

3.条件操作符

根据逻辑判断筛选 比如==,<,<=,>,>=,!=
awk -F ':' '$3==0' /etc/passwd
awk -F ':' '$3>=500' /etc/passwd 这样我们就筛选出了普通用户
Linux学习总结(二十一)正则三剑客之awk
逻辑符号后面的数字如果用双引号引起来,则按照字符处理
举一个!=的例子
awk -F ':' '$7!="/sbin/nologin"' /etc/passwd
Linux学习总结(二十一)正则三剑客之awk
当然我们也可以根据字段处理
awk -F ':' '$3<$4' /etc/passwd
Linux学习总结(二十一)正则三剑客之awk
另外还可以使用 && 和 || 表示 “并且” 和 “或者” 的意思
awk -F ':' '$3<$4 && $3<10' /etc/passwd
awk -F ':' '$3>=500 || $3<1' /etc/passwd
Linux学习总结(二十一)正则三剑客之awk

4.awk内置变量

NF :用分隔符分隔后一共有多少段
NR :行数
awk -F ':' '{print NF}' /etc/passwd |head -3
awk -F ':' '{print NR}' /etc/passwd |head -3

Linux学习总结(二十一)正则三剑客之awk
用行号作为判断条件晒筛选,也可以同时匹配某段字符
awk 'NR>20' /etc/passwd
awk -F ':' 'NR>20 && $1~/test/' /etc/passwd

Linux学习总结(二十一)正则三剑客之awk

5.awk 中的数学运算

更改某字段的内容输出
awk -F ':' '$1="root"' /etc/passwd |head -3
以冒号分割,将第一段替换为root
Linux学习总结(二十一)正则三剑客之awk
awk还可以对各个段的值进行数学运算:
awk -F ':' '{$7=$3+$4;print $0}' /etc/passwd |head -3
该语句标示将第三段和第四段求和后替换第七段
Linux学习总结(二十一)正则三剑客之awk
还可以计算某一列的和
head -3 /etc/passwd |awk -F ':' '{(sum=sum+$3)}; END {print sum}'
Linux学习总结(二十一)正则三剑客之awk
这里我们选了文件前三行,统计了以冒号分割的第三列数字之和,sum是变量可以任意取,END是关键词类似shell脚本的done ,其实该命令已经相当于一个带有循环语句的简单脚本了
在awk中使用if判断,for循环都可以,举一个if例子
awk -F ':' '{if ($3>=500) print $0}' /etc/passwd
Linux学习总结(二十一)正则三剑客之awk

转载于:https://blog.51cto.com/12606610/2083838

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值