在linux在第二个文件比较两个未排序列表,列出唯一(Comparing two unsorted

2019-06-25 14:35发布

我有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:

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 2:

您需要使用comm

comm -13 first.txt second.txt

将做的工作。

PS。 为了在命令行事务的第一和第二文件的。

还可能需要之前文件进行排序:

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

如果文件是数字加-n选项sort



Answer 3:

这应该工作

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

这似乎排序-n(数字)不能与通讯,它使用排序(字母)的内部工作

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 4:

cat f1.txt f2.txt | sort |uniq > file3


文章来源: Comparing two unsorted lists in linux, listing the unique in the second file