두 번째 부분에서는 동일하지만 첫 번째 부분에서는 다른 행을 나열합니다.

두 번째 부분에서는 동일하지만 첫 번째 부분에서는 다른 행을 나열합니다.

A, B, C, D 형식의 줄이 포함된 큰 파일이 있다고 가정합니다(각 줄은 쉼표로 구분된 4개의 부분으로 구성됨). 공통된 네 번째 부분(이 행에서 D는 동일함)이 있는 모든 행의 목록이 필요하지만 나머지 부분은 다릅니다(A,B,C).

예를 들어, D 부분이 동일하더라도 나머지 부분은 동일하므로 중복된 줄이 출력에 나타나서는 안 됩니다.

이를 수행할 수 있는 방법이 있습니까?

PS 파일에는 약 8M 라인이 있으므로 일부 작업은 텍스트 편집기에서 시각적으로 수행할 수 없습니다.

답변1

 awk -F, -vD='D' '$4==D && !seen[$0]++' data
  • -F,별도의 필드,
  • -vD='D'원하는 네 번째 열을 변수에 할당하고 원하는 네 번째 열 값으로 D변경합니다 .'D'
  • $4==D && !seen[$0]++네 번째 열이 변수와 동일 D하고 이전에 본 적이 없는 경우 행을 인쇄합니다.

뒤에 공백이 있으면 다음을 ,사용하십시오.

 awk -vFS=', *' -vD='D' '$4==D && !seen[$0]++' data

관련 정보