Awk
使用 awk 對列中的項目進行分組
嘗試執行以下操作,我有 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
想找出常見的介面類型預期結果:
如果
/
包含兩次則計算匹配,否則只是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
$ awk -F"/" '!seen[$1]++ {print $1}' findint.txt Eth1 Eth101 Eth103 Gi0
要將輸出全部放在一個逗號分隔的行中,您可以將輸出分隔符設置為
ORS
,,
但是您需要為最後一個值設置特殊情況;一種更簡單的方法是將輸出管道awk
傳輸到paste
:awk -F"/" '!seen[$1]++ {print $1}' findint.txt | paste -sd,