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