여러 열이 포함된 파일이 있고 특정 열 값(열 3-6)이 반복되는 파일을 식별하고 싶습니다.
다음 코드는 중복 항목을 찾았지만 두 번째 인스턴스뿐만 아니라 두 인스턴스를 모두 표시하고 싶습니다. 다른 열 값(1, 2, 7+열)은 두 행 간에 다를 수 있으므로 두 인스턴스를 모두 확인해야 합니다.
awk 'seen[$3, $4, $5, $6]++ == 1' filename
답변1
uniq
다음에 적합한 도구입니다.
uniq -D -f2 file
어디:
-D
- 모든 사본을 인쇄-f2
- 처음 두 필드를 비교하지 마십시오.
편집하다:필드 7 이상을 비교하지 않는 경우 다음이 필요합니다 awk
.
awk 'n=x[$3,$4,$5,$6]{print n"\n"$0;} {x[$3,$4,$5,$6]=$0;}' file
x[]
배열 항목(3~6열)을 확인합니다. 이미 설정되어 있는 경우 해당 섹션을 실행합니다{...}
. (동일한 명령문에서n
변수는 해당 배열 항목의 값으로 설정됩니다.)- 괄호 안
{...}
:n
변수와 현재 줄을 인쇄합니다.$0
- 그런
x[]
다음 나중에 비교하기 위해 다음 반복의 배열 항목을 현재 행 내용으로 설정합니다.