我有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)
x3naxklr1#
grep -Fxv -f first-file.txt second-file.txt
基本上查找second-file.txt中所有不匹配first-file.txt中任何行的行。如果文件很大,可能会很慢。此外,一旦对文件进行了排序(如果是数字文件,则使用sort -n),那么comm也应该可以工作。给予什么错误?试试这个:
second-file.txt
first-file.txt
sort -n
comm
comm -23 second-file-sorted.txt first-file-sorted.txt
js81xvg62#
使用comm:
comm -13 first.txt second.txt
就能完成任务ps.命令行中第一个和第二个文件的顺序问题。你也可能需要排序文件之前:
comm -13 <(sort first.txt) <(sort second.txt)
如果文件是数字,请将-n选项添加到sort。
-n
sort
kx5bkwkv3#
这应该工作
comm -13 <(sort file1) <(sort file2)
似乎sort -n(数字)不能与sort(字母数字)一起使用,sort在内部使用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
fhg3lkii4#
cat f1.txt f2.txt | sort |uniq > file3
iyr7buue5#
如果你有两个已排序的文件,diff就是为此而设计的:
diff
diff -y --suppress-common-lines --color=always sorted_list1.txt sorted_list2.txt | less
5条答案
按热度按时间x3naxklr1#
基本上查找
second-file.txt
中所有不匹配first-file.txt
中任何行的行。如果文件很大,可能会很慢。此外,一旦对文件进行了排序(如果是数字文件,则使用
sort -n
),那么comm
也应该可以工作。给予什么错误?试试这个:js81xvg62#
使用
comm
:就能完成任务
ps.命令行中第一个和第二个文件的顺序问题。
你也可能需要排序文件之前:
如果文件是数字,请将
-n
选项添加到sort
。kx5bkwkv3#
这应该工作
似乎sort -n(数字)不能与sort(字母数字)一起使用,sort在内部使用
f1.txt
f2.txt
21应出现在第三列
fhg3lkii4#
iyr7buue5#
如果你有两个已排序的文件,
diff
就是为此而设计的: