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