假设我有一个文件,其中包含:
A
A
A
B
CC
Run Code Online (Sandbox Code Playgroud)
我想要这样的输出:
A 3
B 1
CC 1
Run Code Online (Sandbox Code Playgroud)
Che*_*eng 30
我想到了; 之一uniq的选择是-c,对‘通过的出现次数前缀线’:
$ uniq -c
Run Code Online (Sandbox Code Playgroud)
Dis*_*oat 17
我刚刚带着类似的问题来到这里。由此,我设法组合了一个稍微高级的命令,我希望它对其他人有用。
正如 Steven D 在上面的评论中所说,uniq只计算相邻的重复行,因此您需要先对行进行排序。之后,我们找到唯一的行,然后再次排序,使出现次数最多的行位于顶部。
sort file.txt | uniq -c | sort -nr > output.txt
Run Code Online (Sandbox Code Playgroud)
输出被重定向到文件中output.txt。如果您只想在命令行上查看结果,请移除重定向并将最后一个命令更改为 ,sort -n以便最常见的行位于底部,即绝对仍在屏幕上。