Awk常用命令
-
列出最常的十条命令:
history | awk '{$1="";print $0}' | awk '{a[$0]++}END{for(i in a){print a[i],i}}' | sort -rn |head
-
经典的去重复行:
awk '! a[$NF]++'
-
列出每个ip的连接数
netstat -anpt | awk -F: '{a[$1]++}END{for(i in a){print i,a[i]}}' |grep -v 'and' | grep -v 'Address'
-
打印单引号
awk '{print "'\''"$1"'\''"","}'
-
other
awk ‘{gsub(/^[^ \t]+[ \t]*/,””)}1’ file 去头
awk ‘!a[$1]++’ file
awk ‘{a[$1]++}END{for (j in a) print a[j],j}’ post-install | sort -rn
文件file的每一行的格式如下:
600001 200712 SH 20080413
希望吧格式调整为:
600001 2007 12 2008 04 13
可以实用以下shell命令:
cat file | awk ‘{print $1 “\t” substr($2,1,4) “\t” substr($2,5,2) “\t” substr($4,1,4) “\t” substr($4,5,2) “\t” substr($4,7,2)}’
awk ‘{if($2>100) print }’ #判断
awk ‘{sum+=$3}END{print sum}’ #求和
awk ‘{$1=””,$2=””,print $0}’ #删除某列
awk ‘{a[$0]++}END{for(i in a){print a[i],i}}’ #分组统计
awk ‘{ gsub(/test/, “mytest”); print }’ testfile #全局替换
awk ‘{ gsub(/test/, “mytest”, $1); print }’ testfile #匹配替换
awk ‘NR==5{print substr($0,3,1)}’ filename #取第五行的第3个字符
awk -F ‘[][]|:’ ‘{print $1,$2″:”$3} #以[]或:为分隔符
awk ‘{printf(“%5s,%8s,%5d,%2s,%8.2f,%6s\n”,$1,$2,$3,$4,$5,$6)}’ file #输出格式化
%s参数,用来打印字符串,可以指定宽度,不足的补空格,正数表示右对齐,负数表示左对齐。
打印倒数第二列($i为环境变量)
awk -F'-' '{print "'$i'",$(NF-1)}' file