단일 공개 필드가 있는 행 삭제

단일 공개 필드가 있는 행 삭제

다음과 같이 탭으로 구분된 파일이 있습니다.

123   some text
123   some different text
334   some other text
341   more text

저는 두 가지 일을 하고 싶습니다. 하나는 모든 것을 숫자별로 정렬하는 것이고(쉽게 수행할 수 있음), 다른 하나는 숫자가 이미 있는 경우 행을 삭제하는 것입니다. 즉, 출력은 다음과 같습니다.

123   some text
334   some other text
341   more text

고유한 숫자만 포함된 파일을 얻으려고 합니다.

123
334
341

원본 파일과 연결합니다.

join -j 1 justNumbers.txt original.txt

하지만 이것은 나에게 원본 파일을 제공합니다. 어떤 아이디어가 있나요?

답변1

고유성을 정렬/테스트하려는 경우첫 번째특히 귀하의 시스템에는 GNU coreutils버전이 있으므로 sort다음을 사용할 수 있다고 생각합니다.

sort -nu file

지금 바로.

$ sort -nu file
123   some text
334   some other text
341   more text


~에서info coreutils 'sort invocation'

명령 sort -usort | uniq동일하지만 이 동등성은 임의의 sort옵션으로 확장되지 않습니다. 예를 들어 sort -n -u고유성을 확인할 때 초기 숫자 문자열의 값만 확인합니다., sort -n | uniq 전체 생산 라인을 검사하면서.

답변2

이 시도 awk:

awk '!($1 in a){a[$1];print}' file
123   some text
334   some other text
341   more text

이는 파일이 정렬되어 있다고 가정합니다.

관련 정보