Comparing two unsorted lists in linux, listing the unique in the second file

前端 未结 4 1058
无人共我
无人共我 2021-01-29 22:36

I have 2 files with a list of numbers (telephone numbers).

I\'m looking for a method of listing the numbers in the second file that is not present in the first file.

相关标签:
4条回答
  • 2021-01-29 23:03
    grep -Fxv -f first-file.txt second-file.txt
    

    Basically looks for all lines in second-file.txt which don't match any line in first-file.txt. Might be slow if the files are large.

    Also, once you sort the files (Use sort -n if they are numeric), then comm should also have worked. What error does it give? Try this:

    comm -23 second-file-sorted.txt first-file-sorted.txt
    
    0 讨论(0)
  • 2021-01-29 23:06

    This should work

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

    It seems sort -n (numeric) cannot work with comm, which uses sort (alphanumeric) internally

    f1.txt

    1
    2
    21
    50
    

    f2.txt

    1
    3
    21
    50
    

    21 should appear in third column

    #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
    
    0 讨论(0)
  • 2021-01-29 23:13
    cat f1.txt f2.txt | sort |uniq > file3
    
    0 讨论(0)
  • 2021-01-29 23:21

    You need to use comm:

    comm -13 first.txt second.txt
    

    will do the job.

    ps. order of first and second file in command line matters.

    also you may need to sort files before:

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

    in case files are numerical add -n option to sort.

    0 讨论(0)
提交回复
热议问题