1.方法1 使用awk命令统计重复
awk '{a[$0]++}END{for(i in a){print i,a[i] | "sort -r -k 2"}}' testfile
结果如下:
其中a[$0]大概表示将一整行写入数组a,如果是a[$2]则表示将每一行的第二个元素‘memlib’写入数组a,默认以空格作为分割一行的元素。可以用 -F指定分割符如下:
awk -F:'{a[$2]++}END{for(i in a){print i,a[i] | "sort -r -k 2"}}' testfile
2.方法2 使用sort|uniq|cut
以下操作不会写入源文件,只会打印到terminal,可以加 | tee xxx.log
(a).排序
$ sort test.txt
(b).去掉相邻的重复行
$ sort test.txt | uniq
(c).去重并统计重复次数
$ sort test.txt | uniq -c
效果如下:
(d).对文本按重复次数进行排序
sort -n可以识别每行开头的数字,并按其大小对文本行进行排序。默认是按升序排列,如果想要按降序要加-r选项(sort -rn)。
$ sort test.txt | uniq -c | sort -rn
(e).删除每行前面的重复次数
cut命令可以按列操作文本行。可以看出前面的重复次数占8个字符,因此,可以用命令cut -c 9- 取出每行第9个及其以后的字符。
$ sort test.txt | uniq -c | sort -rn | cut -c 9-