linux 파일내용 리눅스에서 두 개의 정렬되지 않은 목록 비교, 두 번째 파일에서 고유 한 목록




리눅스 최근 생성 파일 찾기 (4)

번호 목록 (전화 번호)이있는 2 개의 파일이 있습니다.

첫 번째 파일에없는 두 번째 파일의 번호를 나열하는 방법을 찾고 있습니다.

나는 다양한 방법을 시도했다.

comm (getting some weird sorting errors)
fgrep -v -x -f second-file.txt first-file.txt (unsure of the result, there should be more)

감사


Answer #1

이것은 효과가있다.

comm -13 <(sort file1) <(sort file2)

sort -n (숫자)은 내부적으로 정렬 (영숫자)을 사용하는 comm에서는 작동하지 않습니다.

f1.txt

1
2
21
50

f2.txt

1
3
21
50

21 세 번째 열에 나타나야합니다.

#WRONG
$ comm <(sort -n f1.txt) <(sort -n f2.txt)   
                1
2
21
        3
        21
                50

#OK
$ comm <(sort f1.txt) <(sort f2.txt)
                1
2
                21
        3
                50

Answer #2
cat f1.txt f2.txt | sort |uniq > file3

Answer #3
grep -Fxv -f first-file.txt second-file.txt

기본적으로 second-file.txt 에서 first-file.txt 모든 행과 일치하지 않는 모든 행을 찾습니다. 파일이 클 경우 속도가 느려질 수 있습니다.

또한 일단 파일을 정렬하면 (숫자가있는 경우 sort -n 사용) comm 도 작동해야합니다. 어떤 오류가 있습니까? 이 시도:

comm -23 second-file-sorted.txt first-file-sorted.txt

Answer #4

당신은 comm 을 사용해야합니다 :

comm -13 first.txt second.txt

그 일을 할 것입니다.

추신. 커맨드 라인 문제에서 첫 번째와 두 번째 파일의 순서.

다음과 같이하기 전에 파일을 정렬해야 할 수도 있습니다.

comm -13 <(sort first.txt) <(sort second.txt)

파일의 경우 숫자로 sort -n 옵션을 사용하십시오.





grep