0

最初の列を一致させることは問題ありませんが、それは役に立ちません。

awk '!(x[$(1)]++)' List.txt

ファイルの最後の 6 列 (または 1 列?) で重複する MAC アドレスを検索したい。一致が見つかった場合は、印刷して一致を削除します。

 q-r20 RFC1213-MIB::atPhysAddress.1.1.10.6.2.31 = Hex-STRING: 00 1B 90 67 B7 C0 
 q-r20 RFC1213-MIB::atPhysAddress.1.1.10.6.2.36 = Hex-STRING: 00 13 60 FC 51 40
 q-r21 RFC1213-MIB::atPhysAddress.1.1.10.6.2.33 = Hex-STRING: 00 12 D9 18 66 C0 
 q-r21 RFC1213-MIB::atPhysAddress.1.1.10.6.2.34 = Hex-STRING: 00 13 C3 82 35 C0 
 q-r21 RFC1213-MIB::atPhysAddress.1.1.10.6.2.35 = Hex-STRING: 00 13 60 B3 76 40 
 q-r21 RFC1213-MIB::atPhysAddress.1.1.10.6.2.36 = Hex-STRING: 00 13 60 FC 51 40 

望ましい結果。

 q-r20 RFC1213-MIB::atPhysAddress.1.1.10.6.2.31 = Hex-STRING: 00 1B 90 67 B7 C0 
 q-r20 RFC1213-MIB::atPhysAddress.1.1.10.6.2.36 = Hex-STRING: 00 13 60 FC 51 40 
 q-r21 RFC1213-MIB::atPhysAddress.1.1.10.6.2.33 = Hex-STRING: 00 12 D9 18 66 C0 
 q-r21 RFC1213-MIB::atPhysAddress.1.1.10.6.2.34 = Hex-STRING: 00 13 C3 82 35 C0 
 q-r21 RFC1213-MIB::atPhysAddress.1.1.10.6.2.36 = Hex-STRING: 00 13 60 FC 51 40
4

4 に答える 4

4

に設定FSすると:、これが簡単になります。4 番目の列は、これを使用した MAC アドレスFSです。

$ awk -F':' '{print $4}' file
 00 1B 90 67 B7 C0 
 00 13 60 FC 51 40
 00 12 D9 18 66 C0 
 00 13 C3 82 35 C0 
 00 13 60 B3 76 40 
 00 13 60 FC 51 40 

スクリプトを編集し$4て、一意の値を処理するだけです。

$ awk -F':' '!a[$4]++' file
 q-r20 RFC1213-MIB::atPhysAddress.1.1.10.6.2.31 = Hex-STRING: 00 1B 90 67 B7 C0
 q-r20 RFC1213-MIB::atPhysAddress.1.1.10.6.2.36 = Hex-STRING: 00 13 60 FC 51 40
 q-r21 RFC1213-MIB::atPhysAddress.1.1.10.6.2.33 = Hex-STRING: 00 12 D9 18 66 C0
 q-r21 RFC1213-MIB::atPhysAddress.1.1.10.6.2.34 = Hex-STRING: 00 13 C3 82 35 C0
 q-r21 RFC1213-MIB::atPhysAddress.1.1.10.6.2.35 = Hex-STRING: 00 13 60 B3 76 40
于 2013-04-30T10:58:07.147 に答える
1

awk ソリューションの場合、適切な配列キーを定義するだけです

awk '{key=$(NF-5) $(NF-4) $(NF-3) $(NF-2) $(NF-1) $NF} !x[key]++' file
于 2013-04-30T15:02:45.417 に答える