![awk를 사용하여 동일한 열에서 동일한 내용을 가진 행을 삭제하는 방법](https://linux55.com/image/217103/awk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%8F%99%EC%9D%BC%ED%95%9C%20%EC%97%B4%EC%97%90%EC%84%9C%20%EB%8F%99%EC%9D%BC%ED%95%9C%20%EB%82%B4%EC%9A%A9%EC%9D%84%20%EA%B0%80%EC%A7%84%20%ED%96%89%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
다음과 비슷한 대용량 파일이 있습니다.
H2,3,5,9,ef,ty,i;
H2,7,5,6,rt,hg,j;
T2,5,5,0,207,3.7,00,...,2023:46:18:14:31,76;
T2,5,5,0,207,3.5,00,...,2023:46:18:14:31,76;
T2,5,5,0,119,3.5,00,...,2023:46:18:14:32,10;
T2,5,5,0,207,3.5,00,...,2023:46:18:14:32,15;
T2,5,5,0,186,3.4,00,...,2023:46:18:14:32,16;
T2,5,5,0,207,4.6,00,...,2023:46:18:14:32,30;
....
다음 줄을 제거해야 합니다.
- T2,5,5,0,207부터 시작
- 필드 15에 중복된 타임스탬프가 있습니다.
다른 모든 행은 변경하지 않고 그대로 둡니다.
다양한 조합을 시도했지만 지금까지 확인한 조합 중 어느 것도 작동하지 않았습니다.
awk -F ',' ' x!=$15 { if ($1 == T2 && $5 == 207) {x=$15; print$0} else print$0} ' test > test1
어떤 조언이라도 정말 감사하겠습니다! 감사해요
답변1
이 시도:
$ awk -F, '!seen[$1,$2,$3,$4,$5,$8]++' file
산출
H2,3,5,9,ef,ty,i;
H2,7,5,6,rt,hg,j;
T2,5,5,0,207,3.7,00,...,2023:46:18:14:31,76;
T2,5,5,0,119,3.5,00,...,2023:46:18:14:32,10;
T2,5,5,0,186,3.4,00,...,2023:46:18:14:32,16;
설명하다
awk
실제 조건에서의 기본 동작은 이므로print
여기서는 필요하지 않습니다.- 이는
!seen[x]++
작업 수행의 약어입니다uniq
. 확인하다여기
이식성
적용 대상:
gawk
mawk
busybox awk
nawk
(기본freeBSD
awk
)
그리고 모든 awk
구현, 감사합니다에드 모튼
기록된 원본 스니펫:
awk -F, '
($1=="T2" && $2==5 && $3==5 && $4==0 && $5==207 && !seen[$8]++) ||
!($1=="T2" && $2==5 && $3==5 && $4==0 && $5==207)
' file
답변2
이것이 당신이 원하는 것입니까?
$ awk -F, '/^T2,5,5,0,207,/ && seen[$15]++{ next }1' infile
H2,3,5,9,ef,ty,i;
H2,7,5,6,rt,hg,j;
T2,5,5,0,207,3.7,00,...,2023:46:18:14:31,76;
T2,5,5,0,119,3.5,00,...,2023:46:18:14:32,10;
T2,5,5,0,207,3.5,00,...,2023:46:18:14:32,15;
T2,5,5,0,186,3.4,00,...,2023:46:18:14:32,16;
....
처음 5개 필드 및 해당 필드 #15의 타임스탬프와 일치 하는 첫 번째 행을 인쇄한 T2,5,5,0,207
다음 이전에 표시된 것과 동일한 5개 시작 필드 및 동일한 타임스탬프가 있는 다른 유사한 행을 건너뜁니다. 또한 다른 모든 줄도 무조건 인쇄됩니다. .
답변3
필드별로 중복 항목을 제거해야 한다는 것을 깨달았습니다.
awk -F, '!(/^T2,5,5,0,207/ && A[$(NF-1)]++)' file
H2,3,5,9,ef,ty,i;
H2,7,5,6,rt,hg,j;
T2,5,5,0,207,3.7,00,...,2023:46:18:14:31,76;
T2,5,5,0,119,3.5,00,...,2023:46:18:14:32,10;
T2,5,5,0,207,3.5,00,...,2023:46:18:14:32,15;
T2,5,5,0,186,3.4,00,...,2023:46:18:14:32,16;
A[$(NF-1)]
- 이 파일에A[$9]