첫 번째 열의 값은 동일하지만 두 번째 열의 값은 다른 스크립트를 작성하려고 합니다. 이 작업을 수행하는 방법을 아는 사람이 있나요? 예: 다음과 같은 .txt 파일이 있습니다.
163.213.54.88 aaaaa
163.213.54.88 bbbbb
9.143.93.246 ccccc
219.98.24.226 aaaaa
163.213.54.88 aaaaa
215.134.242.10 ccccc
131.16.225.31 bbbbb
9.143.93.246 aaaaa
131.16.225.31 bbbbb
이 경우 결과는 다음과 같아야 합니다.
163.213.54.88
9.143.93.246
매우 감사합니다.
답변1
다른 행과 중복되는 모든 행을 제거한 후 첫 번째 필드가 두 번 이상 나타나는 행의 첫 번째 필드를 추출합니다.
$ sort -u file | awk '++count[$1] == 2 { print $1 }'
163.213.54.88
9.143.93.246
답변2
정렬할 필요가 없습니다.
awk '!($1 in a) {a[$1] = $2; next} $2 != a[$1] {print $1}' file
산출
163.213.54.88
9.143.93.246
답변3
@Kusalananda의 답변과 매우 유사하지만(그는 나보다 한 발 앞서 있었습니다) 호출이 더 간단합니다 awk
.
sort -u file | awk '{print $1}' | uniq -d
이 방법은 또한 다른 행과 중복되는 행을 제거한 다음 해당 행의 첫 번째 필드를 추출한 다음 첫 번째 필드의 모든 항목을 두 번 이상 출력합니다.