linux下统计重复行出现的次数|花式排序|去重,awk|sort|uniq|cut

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- 

猜你喜欢

转载自blog.csdn.net/cy413026/article/details/91490714