web-dev-qa-db-ja.com

2回以上出現したアイテムを出力する

たとえばここで、4回以上表示されたIPを選択するにはどうすればよいですか?

入力ファイルは

192.168.1.28
192.168.1.100
192.168.1.31
192.168.101.2
192.168.1.31
192.168.11.02
192.168.1.31
192.168.1.28
192.168.1.28
192.168.1.31
192.168.21.31
192.168.1.28
192.168.1.31

次に、この出力を取得したいと思います。

192.168.1.28
192.168.1.31  

AWKの使用が推奨されます

皆さん、ありがとうございました! :)

3
Arash

ニコールハミルトンの答えとgawkを組み合わせると、次のようになります(4回以上出現する行の場合)。

sort iplist.txt | uniq -c | gawk '$1>=4{print $2}' 

正確に4回行います:

sort iplist.txt | uniq -c | gawk '$1==4{print $2}' 

変更 4興味のある番号に。

5
terdon

iplist.txtという名前のファイル内のリストを想定しましょう。これを試して:

sort iplist.txt | uniq -d

実行すると次のようになります。 IPアドレス192.168.1.28の3番目のオカレンスを意図的に追加したので、2 またはそれ以上回発生する行のみが出力にリストされ、重複する各行は次のように表示されます。一度。

bash-4.1$ cat iplist.txt
192.168.1.28
192.168.1.100
192.168.1.31
192.168.101.2
192.168.11.02
192.168.1.31
192.168.21.31
192.168.1.28
192.168.1.28
bash-4.1$ sort iplist.txt | uniq -d
192.168.1.28
192.168.1.31
bash-4.1$
4
Nicole Hamilton

4回以上お試しください:

awk '++A[$1]==4' file
1
Scrutinizer