尝试执行以下操作,我有 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
答案1
$ awk -F"/" '!seen[$1]++ {print $1}' findint.txt
Eth1
Eth101
Eth103
Gi0
要将输出全部放在一个逗号分隔的行中,您可以将输出分隔符设置ORS
为,,
但是您需要为最后一个值制作特殊情况;一种更简单的方法是将awk
to的输出通过管道传输paste
:
awk -F"/" '!seen[$1]++ {print $1}' findint.txt | paste -sd,