1.介绍
cat a.log |awk -F ',' '{print $5}' |sort | uniq -c| sort -nr
- awk: 以逗号为分隔符,分割后选择第5列的内容;$0表示打印所有内容。
- grep: -o只输出命中匹配的字符串,而不是整行;
- sort: 先按照字符串正序排序;
- uniq: -c 统计每行出现的次数,输出两列,第一列是次数;
- sort: -nr,按照数字降序排列。
2.awk命令
awk [-F field-separator] 'commands' input-file(s)
command可以写语句块,太过复杂,先不学。
3.sort命令
https://juejin.cn/post/6987292528412196871
sort命令将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用『纯数字』进行排序(默认是以文字型态来排序的);【常用】
-r :反向排序;【常用】
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,默认是用 [tab] 键来分隔;
-k :以那个区间 (field) 来进行排序的意思
例子:
apple,5,2.6
orange,8,8
banana,3,7.2
pear,6,4
————————————
$ sort -t , -k 2 a.log #用,号分割,按第二列排序
banana,3,7.2
apple,5,2.6
pear,6,4
orange,8,8
4.uniq命令
uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的。一般先sort后uniq。
- -i :忽略大小写字符的不同;
- -c :计数出现次数;
- -u :只显示唯一的行;
banana,3,7.2
apple,5,2.6
pear,6,4
orange,8,9
apple,5,2.6
banana,3,7.2
————————————————
$ sort log.txt|uniq -c
2 apple,5,2.6
2 banana,3,7.2
1 orange,8,9
1 pear,6,4
5.grep命令
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数。【count】
-i :忽略大小写的不同,所以大小写视为相同。【ignore】
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示