最近统计分析日志,熟悉常用的统计命令能大大提高统计效率,记录如下。
如文件file按行组织,包含4列字段:
a1 a2 a3 a4
各列以空格分隔
统计文件行数
wc -l file
取其中第2,3列,输出到新文件:
cut -d' ' -f2,3 file > newfile
如果需要将file中的空格替换为'|':
cat file | tr ' ' '|' > newfile
输出包含字符str在file中的记录:
grep 'str' file
如果要求字符是在每行的首字符开始出现:
grep ’^str' file
根据字段值筛选记录,如查找第4列值大于1的记录,写入newfile:
gawk ‘$4>1' > newfile
根据字段值删除记录,如删除文件中带有user的行:
sed ‘/user/d' file > newfile
根据字段值对文件进行排序,如根据第4列的值排序
sort -t' ' -k4,4 -n file > file_after_sort
其中: -t<分隔字符> 指定排序时所用的栏位分隔字符
-k Start,End Start指定排序的列,如果没指定End部分,则读从指定的列开始到行末尾整个被排序
Start和End部分又可以细分为FStart.CEnd部分,可以根据从某列内部的字符进行排序
-n 表示按值进行排序
-r 逆序
注:在排序时,a1如果是ip值,sort命令排序时,会忽略ip的段间的点号,如果ip地址去除点号好的值相同,再考虑点号位置的影响,具体还需要参看下sort源码,标记下