簡體   English   中英

在Shell腳本中計數值

[英]Count value in shell script

我需要幫助,我有一個文件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命令。

非常感謝

您可以使用uniqsort做到這一點:

<output.txt sort -V | uniq -c

輸出:

3 ttl 1
1 ttl 64
7 ttl 128
1 ttl 255

排序,uniq足以勝任這項工作。 但是,要獲得與上述問題相同的輸出格式,請嘗試以下awk行

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

例如

  • 連接器“-”
  • 如果count> 1顯示times ,否則time不帶s。

輸出為:

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

:)

您可以使用sort命令對文件和uniq進行排序,以使其唯一並計算出現次數:

 sort output.txt | uniq -c

注意:唯一的“問題”是計數在每個事件的前面,而在您的示例中是在此之后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM