고유한 필드 합계를 기반으로 행을 인쇄하는 방법은 무엇입니까 2
?3
4
필드 2와 3은 숫자, 필드 3은 알파벳이며 파일에는 총 2500줄이 있습니다.
입력하다:
10,11,12,A,3
10,11,12,A,4
10,11,12,B,3
산출:
10,11,12,B,3
답변1
그리고 awk
:
awk -F, 'NR==FNR{ dup[$2, $3, $4]++; next } (dup[$2, $3, $4]==1)' infile infile
여기서는 입력을 두 번 처리합니다 . 먼저 파일을 읽고 infile
지정된 필드를 기반으로 반복되는 각 줄을 해당 줄의 발생 횟수를 늘릴 때마다 이라는 연관 배열 $2
에 저장합니다.$3
$4
dup
++
다음 단계에서는 지정된 필드가 한 번만 나타나는 경우 전체 줄을 확인하고 인쇄합니다.
답변2
예를 들어:
egrep '^[^,]*,11,12,B,' input.file
설명하다:
^
줄의 처음부터
[^,]
","가 아닌 모든 것
*
가능한 한 여러 번
,11,12,B,
그게 당신이 찾고 있는 거예요