![중복된 단어를 찾아서 세고 싶지만 고유한 단어(중복되지 않은 단어)는 무시하고 싶습니다.](https://linux55.com/image/148704/%EC%A4%91%EB%B3%B5%EB%90%9C%20%EB%8B%A8%EC%96%B4%EB%A5%BC%20%EC%B0%BE%EC%95%84%EC%84%9C%20%EC%84%B8%EA%B3%A0%20%EC%8B%B6%EC%A7%80%EB%A7%8C%20%EA%B3%A0%EC%9C%A0%ED%95%9C%20%EB%8B%A8%EC%96%B4(%EC%A4%91%EB%B3%B5%EB%90%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EB%8B%A8%EC%96%B4)%EB%8A%94%20%EB%AC%B4%EC%8B%9C%ED%95%98%EA%B3%A0%20%EC%8B%B6%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
다음 명령은 다음과 같습니다.
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