열 2에서 중복 레코드를 확인하고 awk에서 이 행을 삭제하고 싶습니다.
create a
delete a
create b
create c
delete c
create d
delete f
create f
create g
create h
예상 출력
create b
create d
create g
create h
awk에서 이 명령을 사용해 보았으나 반대 방향으로 실행되었지만 정확한 결과는 나오지 않았습니다.
참고: AWK는 필수가 아닙니다.
awk -F" " '{ if( (++count[$2]==2) ) print }'
답변1
"중복 레코드"는 연속된 행에서 반복되는 것을 의미한다고 가정합니다. 그렇지 않은 경우 전체 파일의 고유 레코드를 고려하려면 두 번째 필드의 데이터를 먼저 정렬하십시오( sort -k 2,2 file
).
사용 uniq
:
$ uniq -f 1 -u file
create b
create d
create g
create h
-f 1
비교를 수행할 때 첫 번째 공백으로 구분된 필드( )를 무시하고 일치하는 모든 줄을 출력합니다.아니요연속된 라인에 대해 ( )를 반복합니다 -u
.