重複した単語を見つけて数えたいのですが、固有の単語(重複していない単語)は無視したいと思います。

重複した単語を見つけて数えたいのですが、固有の単語(重複していない単語)は無視したいと思います。

次のコマンドは次のとおりです。

echo "zebra ant spider spider ant zebra ant dog shark" | xargs -n1 | sort | uniq -c | xargs

結果:

3 ant 1 dog 1 shark 2 spider 2 zebra

ユニークな単語(犬とサメは重複単語ではないため)を無視して、個数のある重複単語だけを探したいと思います。

答え1

$ echo "zebra ant spider spider ant zebra ant dog shark" |\
  fmt -1 | sort | uniq -cd | xargs echo
3 ant 2 spider 2 zebra

答え2

不要xargs

echo $(printf '%s\n' zebra ant spider spider ant zebra ant dog shark | 
       sort | uniq -dc)

出力:

3 ant 2 spider 2 zebra

答え3

Gnu awkを使用したPROCINFO:

echo "zebra ant spider spider ant zebra ant dog shark" |
awk '
  BEGIN { PROCINFO[ "sorted_in" ] = "@ind_str_asc" }
  { for ( i = 1 ; i <= NF ; i++ ) a[$i]++ }
  END {
    for ( i in a ) if( a[i] > 1 ) {
      b = b c a[i] " " i
      c = " "
    }
    print b
  }'

答え4

私は次の方法でそれをしました

注文する

echo "zebra ant spider spider ant zebra ant dog shark" | sed "s/ /\n/g"| awk '{a[$1]++}END{for(x in a) print x,a[x]}'| awk '$2 != "1" {print $0}'

出力

echo "zebra ant spider spider ant zebra ant dog shark" | sed "s/ /\n/g"| awk '{a[$1]++}END{for(x in a) print x,a[x]}'| awk '$2 != "1" {print $0}'

zebra 2
ant 3
spider 2

関連情報