玩转linux三剑客-三剑客实战经典例题
原创
©著作权归作者所有:来自51CTO博客作者wx46e3b8a6537fb的原创作品,请联系作者获取转载授权,否则将追究法律责任
一些经典例题
例 1:使用 awk 求第二列的平均值
less test.log | awk '{a[$1]+=$2;b[$1]++} END{for(key in a) print key,a[key]/b[key]}'
例 2:打印 9 * 9 乘法表
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'
例 3:找一天之内的一个文件并拷贝到某个地方
find /home -name test -type d -mtime -1 -exec cp -r {} /tmp/ \;
例 4:打印奇数行或者偶数行
# 打印奇数行
seq 10 | awk 'i=!i'
seq 10 | awk 'NR%2==1'
seq 10 | sed '1~2p'
# 打印偶数行
seq 10 | awk '!(i=!i)'
seq 10 | awk -v 'i=1' 'i=!i'
seq 10 | awk 'NR%2==2'
seq 10 | sed '2~2p'
例 5:使用 awk 展现某个进程 tcp 和 mem 在 10s 内的平均占用率
top -p [pid] -n 10 -d 1 -b | grep '关键字' | awk -v"OFS=\t" 'BEGIN{print "CPU%","MEM%"} {cpu+=$9;mem+=$10;print $9,$10} END{print "\n"cpu/NR,mem/NR}'
例 6:统计到当前机器有多少到端口号 xxx 的连接
netstat -npt | awk '$4~/.*xxx$/' | wc -l