중복 필드를 식별하고 awk를 사용하여 인쇄합니다.

중복 필드를 식별하고 awk를 사용하여 인쇄합니다.

여러 열이 포함된 파일이 있고 특정 열 값(열 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[]다음 나중에 비교하기 위해 다음 반복의 배열 항목을 현재 행 내용으로 설정합니다.

관련 정보