Awk 小玩

1 不用排序和uniq来删除文件中重复的行 awk ‘!x[$0]++’ 例子 echo -e “aaa\nbbb\naaa\naa\nccc\naa”|awk !‘x[$0]++’ 输出 aaaa bbb aa cc 当然,要是找出重复的行,只需要把”!”去掉即可 2 计算一些特定文件的大小 例子1:当前文件夹下的所有文件的大小 als -l | awk ‘{s = s+$5 }; END { print s }’ 例子2:当前文件夹以及其子文件夹下所有mp3文件的大小 als -lR *.mp3 | awk ‘{s = s+$5 }; END { print s }’ 3 用find来实现上面的例子//当然没事找事复杂了 afind / -name .mp3 -exec ls -l {} \; | awk ‘{s = s+$5 }; END { print s }’ 4 找出你的top10命令n ahistory | awk ‘{a[$’echo "1 2 $HISTTIMEFORMAT" | wc -w’]++}END{for(i in a){print a[i] “\t” i}}’ | sort -rn | head -n10 5 把行号和域分解出来 aawk ‘{print NR”: “$0; for(i=1;i<=NF;++i)print “\t”i”: “$i}’ /etc/passwd 6 重命名文件 als -1 pattern | awk ‘{print “mv “$1” “$1”.new”}’ | sh 当然也可是试试rename ‘s/png/jpg/’ * //当然只是个例子而已