awk常用案例
1、取出/etc/passwd中的第1行的第1列,第3列和最后一列
awk -F: 'NRՎҧ1{print $1,\(3,\)NF}' /etc/passwd
2、取出/etc/passwd的第1行
awk 'NR==1' /etc/passwd
3、取出第2行到第5行的内容
awk 'NR>=2 && NR<=5' /etc/passwd
4、过滤出/etc/passwd文件中包含root或nobody的行
awk '/root|nobody/' /etc/passwd
5、使用awk取出ls -lh 的大小列和最后一列
ls -lh /etc/hosts |awk '{print \(5,\)NF}' |column -t
6、取出/etc/passwd中的第1列,第3列和最后一列
awk -F':' '{print $1,\(3,\)NF}' /etc/passwd|column -t
7、指定复杂分隔符取出ip
ip a s eth0 | awk 'NR==3'|awk -F'[ /]+' '{print $3}'
8、取出/etc/passwd文件中第3列大于大于100的行,取出这行的第1列,第3列和最后一列
awk -F':' '$3>100{print $1,\(3,\)NF}' /etc/passwd|column -t
9、如果系统swap使用超过0则输出"异常系统开始占用swap"
free |awk '/Swap/ ՎҐ $3 ՎҲ 0 {print "异常系统开始占用swap"}'
10、过滤出/etc/passwd第4列的数字是以0或1开头的行,输出第1列,第3列,第4列
awk -F':' '$4 ~ /[1]/ {print $1,$3}' /etc/passwd
11、统计与计算
统计次数
awk '{i=i+1} END{print i}' /etc/passwd
计算总和
seq 10 > num.txt计算num.txt每一行的数字的总和
awk '{i=i+$1}END{print i}' num.txt
取出第三列等于0,打印出第三列和第五列的内容
awk -F : '{if($3==0)print $3,$5}' /etc/passwd
01 ↩︎