以下を実行しようとすると、インターフェイスデータとしてtxtファイルがあります。
Eth1/15 desc01 1
Eth101/1/11 desc01 1
Eth101/1/16 desc01 1
Eth103/1/21 desc01 1
Eth1/2 desc01 1
Eth1/24 desc01 1
Eth103/1/5 desc01 1
Gi0/1 desc01 1
Gi0/0/1 desc01 1
Gi0/1/1 desc01 1
一般的なインターフェイスタイプの期待される結果を見つけるには、次の手順を実行します。
2回含まれる場合は/
一致する項目の数を計算し、そうでない場合は、Gi0
またはEth1
Eth1, Eth101/1, Eth103/1, Gi0, Gi0/0, Gi0/1
AWKを使ってみましたが、結果はありません。
cat findint.txt | egrep 'Eth|Gi' | awk -F"/" '{print $1}'
追いかけようとする
cat findint.txt | egrep 'Eth|Gi' | \
awk '{print substr($1, 0, length($1)-2)}' | sort -u
その結果、一部の値が重複していますが、重複しません。
予想される結果:
Eth1, Eth101/1, Eth103/1, Gi0, Gi0/0, Gi0/1
ベストアンサー1
$ awk -F"/" '!seen[$1]++ {print $1}' findint.txt
Eth1
Eth101
Eth103
Gi0
すべての出力を1つのカンマ区切りの行に入れるには、出力区切り記号をORS
に設定できますが、,
最後の値に特別なケースを作成する必要があります。より簡単な方法はawk
の出力を次にパイプすることですpaste
。
awk -F"/" '!seen[$1]++ {print $1}' findint.txt | paste -sd,