Linux
awk + 計算文件中的字元串
我在文件 /tmp/users 使用者列表中(每個列表包含差異使用者)
例子
more /tmp/users root kafka yarn hdfs root root yarn moon apache start moon apache
我想列印出現在文件**/tmp/users**中的使用者並將它們計算為以下
預期成績
apache - 2 Hdfs - 1 Kafka - 1 Moon - 2 Root - 3 Start - 1 Yarn - 2
您可以通過此管道獲得此結果,儘管這可能不是最同質的方法:
sort /tmp/users | uniq -c | awk '{print $2 " - " $1;}'
sort
對輸入進行排序,以便uniq
隨後可以處理條目。他們需要被分類。最後awk
生成最終報告,這是一個整容操作。(比較沒有它的輸出。)此外,如果輸入包含空行,您可能希望跳過它們。
perl
派上用場:perl -lne 'print unless /^\s*$/' in | sort | uniq -c | awk '{print $2 " - " $1;}'
這也是一個同質的 Perl 單行:
perl -lne '($s)=/(\S+)/; $a{$s}++ if $s; END {print "$_ - $a{$_}" for (sort keys %a)}' /tmp/users