重複したフィールドのみを検索して印刷

重複したフィールドのみを検索して印刷
Address                  HWtype  HWaddress           Flags Mask       Iface
192.168.142.223          ether   00:50:56:f5:0a:e7   C                     eth0
192.168.142.254          ether   00:50:56:f5:0a:z7   C                     eth0
192.168.142.253          ether   00:50:56:f5:0a:w7   C                     eth0
192.168.142.230          ether   00:50:56:f5:0a:dc   C                     eth0
192.168.142.249          ether   00:50:56:f5:0a:b7   C                     eth0
192.168.142.252          ether   00:50:56:f5:0a:d8   C                     eth0
192.168.142.254          ether   00:50:56:f5:0a:a1   C                     eth0
_gateway                 ether   00:50:56:f0:dd:44   C                     eth0

私はこのようなテキストファイルを持っており、私の意図は最初のフィールドで同じファイルを印刷することです。

例えば

 192.168.142.254          ether   00:50:56:f5:0a:z7   C     eth0
 192.168.142.254          ether   00:50:56:f5:0a:a1   C     eth0

私の解決策はこれです。

 1- cat a |awk '{print $1," ",$3}' |grep $(cat a |awk '{print $1}' |sort |uniq -d) 
 2- cat a |awk '{print $3," ",$1}' |sort -k 2|uniq -f 1 -D

それで気になりますが、他の方法はありませんか? (おそらく単にawkコマンドを使用することもできます。)私は単にbashコマンドを使用したいと思います。

ベストアンサー1

すべてのUNIXシステム上のすべてのシェルでawkを使用し、次のように入力します。

$ awk 'NR==FNR{cnt[$1]++; next} cnt[$1]>1' file file
192.168.142.254          ether   00:50:56:f5:0a:z7   C                     eth0
192.168.142.254          ether   00:50:56:f5:0a:a1   C                     eth0

おすすめ記事