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

답변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,

관련 정보