我正在寻找类似 this 的内容,但我不需要计算重复行的数量,而是需要计算重复行的数量。
为了清楚起见,我有一个这样的文件:
Separator
line11
line12
line13
Separator
line21
line22
line23
Separator
line11
line12
line13
Separator
line11
line12
line13
Separator
line31
line32
line33
Separator
line21
line22
line23
我希望输出如下
3: Separator
line11
line12
line13
2: Separator
line21
line22
line23
1: Separator
line31
line32
line33
其中:3:、2:和1:表示每串行在文件中出现的次数。
我尝试了以下命令但没有成功:
sort all_lits.txt | uniq -c
目前我正在编写一个 awk 命令以获取信息,但还不清楚。一旦我得到一些命令来显示,我就会发布它。
是否可以使用一些 UNIX 工具组合(例如 awk、grep、wc、sort)来获取此信息。等等?
我知道我可以写一个脚本来做到这一点,但我想避免这样做。在极端情况下我会这样做。
我们将不胜感激任何帮助。
最佳答案
awk -v RS=Separator '
NR>1 {count[$0]++}
END {for (bunch in count) print count[bunch], RS, bunch}
' file
1 Separator
line31
line32
line33
2 Separator
line21
line22
line23
3 Separator
line11
line12
line13
输出没有内在的顺序。如果您想按计数降序排序,并且您使用的是 GNU AWK:
awk -v RS=Separator '
NR>1 {count[$0]++}
END {
PROCINFO["sorted_in"] = "@val_num_desc"
for (bunch in count) print count[bunch], RS, bunch
}
' file
关于Linux 命令或脚本计算文本文件中重复的一堆行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26138780/