我有两个文件的数字列表(电话号码)
我正在寻找一种方法列出第二个文件中不存在于第一个文件中的数字
我已经尝试了各种方法:
comm (getting some weird sorting errors) fgrep -v -x -f second-file.txt first-file.txt (unsure of the result, there should be more)
谢谢
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
你需要使用comm
:
comm -13 first.txt second.txt
会做这项工作。
PS。 命令行中第一个和第二个文件的顺序。
也可能需要在以下文件中进行排序:
comm -13 <(sort first.txt) <(sort second.txt)
如果文件是数字加-n
选项进行sort
。
这应该工作
comm -13 <(sort file1) <(sort file2)
看起来排序-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
cat f1.txt f2.txt | sort |uniq > file3