を含むファイルがあります
apple
apple
banana
orange
apple
orange
重複するappleとorangeを見つけて、appleとorangeが繰り返されていることをユーザーに伝えるスクリプトが必要です。私は試した
nawk '!x[$1]++' FS="," filename
繰り返されるアイテムを見つけるにはどうすればunix bashでそれらを印刷できますか?
アップデート:
質問が大幅に変更されました。以前は、これに答えると、入力ファイルは次のようになります。
apple apple banana orange apple orange
banana orange apple
...
ただし、解決策はとにかく機能しますが、この特別な使用例には少し複雑すぎるかもしれません.
次の awk スクリプトがその役割を果たします。
awk '{i=1;while(i <= NF){a[$(i++)]++}}END{for(i in a){if(a[i]>1){print i,a[i]}}}' your.file
出力:
apple 3
orange 2
次のような形でより理解しやすくなります。
#!/usr/bin/awk
{
i=1;
# iterate through every field
while(i <= NF) {
a[$(i++)]++; # count occurrences of every field
}
}
# after all input lines have been read ...
END {
for(i in a) {
# ... print those fields which occurred more than 1 time
if(a[i] > 1) {
print i,a[i];
}
}
}
次に、ファイルを実行可能にし、入力ファイル名を渡して実行します。
chmod +x script.awk
./script.awk your.file