다음을 수행하려고 할 때 인터페이스 데이터로 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
의 출력을 다음으로 파이프하는 것입니다 paste
.
awk -F"/" '!seen[$1]++ {print $1}' findint.txt | paste -sd,