某次查看日志时,身边的同事用awk格式化,觉得十分羡慕。之前自学一点perl,想试试perl能否替代awk。结果看了perl的一行程序,发现perl真心十分强大。别说替代awk,grep,其它许多系统命令perl都能很简洁的写出来。
awk:
perl -lane 'print "@F[1..3]";' //打印第1~3字段
uniq:
perl -lne 'print unless $last eq $_;$last=$_'
uniq -c:
这个稍微麻烦些,因为eval的代码在while()中。而最终统计必须等到读完文件才行,不过用perl照样不是问题,2句搞定.
perl -le 's/(\w)+/$wc{$1}++;$1/eg foreach (<>);print "$wc{$_} $_" foreach keys %wc;'
head:
perl -pe 'exit if $.<50'
sort:
perl -le 'print sort (<>)'
yes(好吧我无聊了)
perl -le 'print @ARGV>0?@ARGV[0]:"y" while 1'
perl太灵活了。有时感觉它的语法好像充斥着magic一样。
比如它的map,比如它神奇的切片赋值。(左substr竟然可以当splice用,怎么实现的?)
真是perl在手,文本处理不愁啊。不用学awk,sed了。有perl足以,哈哈。