중복된 단어를 찾아서 세고 싶지만 고유한 단어(중복되지 않은 단어)는 무시하고 싶습니다.

중복된 단어를 찾아서 세고 싶지만 고유한 단어(중복되지 않은 단어)는 무시하고 싶습니다.

다음 명령은 다음과 같습니다.

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

관련 정보