1

我需要帮助,我有一个文件output.txt

ttl 128
ttl 128
ttl 128
ttl 128
ttl 1
ttl 128
ttl 255
ttl 1
ttl 64
ttl 128
ttl 128
ttl 1

我需要计算文件行中出现相同值的次数。最终结果必须是这样的:

ttl 128 - 7 times
ttl 64 - 1 time
ttl 255 - 1 time
ttl 1 - 3 times

我希望你能帮助我。我正在尝试使用 grep 命令。

非常感谢

4

3 回答 3

4

你可以用uniqand做到这一点sort

<output.txt sort -V | uniq -c

输出:

3 ttl 1
1 ttl 64
7 ttl 128
1 ttl 255
于 2013-01-14T14:14:59.377 回答
3

sort, uniq 足以胜任这项工作。但是要获得与所描述的相同的输出格式,请尝试此 awk 行

awk '{a[$0]++}END{for(x in a){t=a[x]>1?"times":"time";print x " - "a[x],t}} file

例如

  • 连接器“-”
  • 如果 count >1 show times,否则time没有 s。

输出是:

ttl 1 - 3  times
ttl 64 - 1 time
ttl 128 - 7  times
ttl 255 - 1 time

:)

于 2013-01-14T14:52:31.420 回答
0

您可以使用该sort命令对文件进行排序并uniq使其唯一并计算出现次数:

 sort output.txt | uniq -c

注意:唯一的“问题”是计数在每次出现之前,在你的例子中在它之后。

于 2013-01-14T14:15:42.307 回答