我正在寻找像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。等。?
我知道我可以写一个脚本来做,但我想避免这样做。在极端情况下,我会这样做。
任何帮助都将受到高度赞赏。
答案 0 :(得分:2)
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
答案 1 :(得分:1)
这是我正在使用的脚本。它仍在测试时间,但它可以作为其他人的基础:
with open(file_name, mode="r") as bigfile:
reader = bigfile.read()
d = dict()
for res in reader.split('Separator'):
if res in d:
d[res]= d[res]+1
else:
d[res]=1
for k in d:
print str(k) + ':' + str(d[k])