自分では解決できないテキスト操作の問題があるため、より賢い人の助けが必要です。
私のダミーファイルの例は次のようになります。
Winter Sally Additional_text
Winter Sally Additional_text
Winter Nicole Additional_text
Spring Lucy Additional_text
Spring Lucy Additional_text
Spring Caroline Additional_text
Spring Caroline Additional_text
Summer Emma Additional_text
Autumn Rita Additional_text
Autumn Rita Additional_text
Autumn Cristina Additional_text
Autumn Lucy's_sister Additional_text
Autumn Lucy's_sister Additional_text
私がしたい:
最初の列の項目ごとに、2 番目の列にいくつの異なる名前があるかを数えます。ただし、1) 少なくとも 2 回出現し、かつ 2) 少なくとも 2 つの異なる名前がある (どちらも少なくとも 2 回出現する) という名前だけを数えなければなりません。
次のような出力の場合:
Time Counts
Spring 2
Autumn 2
出力の説明:
にWinter
は 2 つの異なる名前がありますが、Nicole
発生するのは 1 回だけです -winter
報告されません。
にSpring
は少なくとも 2 つの異なる名前があり、それぞれが少なくとも 2 回出現しSpring
ます。
1Summer
つの名前だけで -Summer
報告されていません。
3つの異なる名前がありAutumn
ますが、少なくとも 2 回出現するのはそのうちの 2 つだけです。Rita
Lucy's_sister
awk と bash で私のソリューションを 編集します。
cut -d " " -f 1 FILE | sort -u > names
for i in $(cat names)
do
grep ^$i FILE |
awk '{print $2}' |
sort |
uniq -c |
awk -v VAR="$i" '($1>=2) {print VAR}' |
sort |
uniq -c |
awk '($1>=2) {print $2"\t"$1}'
done
不器用で繰り返しが多すぎるので、もっと簡単な方法を知りたいです。