awk常用案例

还得多长时间·發表於2024-07-12

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


  1. 01 ↩︎