工作中用到的linux命令

都是工作中用到的,解决问题至上,不求甚解,怕再忘了,所以记录一下,勿喷。

cat xxx.20140725.log |grep ,,2,,1,,|sed 's/,,/	/g'|cut -f 1,10|awk '{a[$0]++}END{for(i in a) print i}'|awk '{a[$2]++}END{for(i in a) print a[i],i}'|sort -k1nr|head -10

先说一下这条命令:

cat:打印文件内容

grep:查找,用到的有s匹配空白字符

sed:刚用到,初步看来是不用依赖vim可以做一些vim命令模式下的操作

cut:分割字符串,默认是制表符,-d重新指定一个字符,sed替换之后可以弥补只能只用单字符的限制

awk:很强大的一门语言,基本格式:'pattern BEGIN{action}{action}END{action}',$0整行,$1第一个域(默认以空格分割,-F重新指定一个字符)

sort:排序,常用-u去重排序,-k1是取第几个元素(默认空白字符分割,使用-t重新指定一个字符),-n以数字,-r倒序

head:取前几行,-10

tail:取后几行,-10

cat catalina.out|grep "process start"|sed 's/[([^]]*)].*[ad: ([^ ]*), ip: ([^]]*)]: /1	2	3	/'
cat hao123.log|awk '{if($5~"www.hao123.com/\?tn=.+"){tn=substr($5,20);if(index(tn,"&")!=0)tn=substr(tn,0,index(tn,"&")-1);a[tn" "$4]++;b[tn]++}}END{for(i in a)print i,b[substr(i,0,index(i," ")-1)]}'|awk '{a[$1]++;b[$1]=$3}END{for(i in a)print b[i]"	"a[i]"	"i}'|sort -k1nr
原文地址:https://www.cnblogs.com/jieyuefeng/p/3867766.html