我有几个wordlist文件是基于每行的单词。
现在,我想生成新的文件,应该是:
比较第一个和第二个文件,把第二个文件中没有的文件放在第三个文件中。
File_1
字1
WORD2
WORD3
word4
的word5
File_2
字1
WORD3
的word5
word7
word9
我尝试了几件事情:
cat file.1 file.2 | sort -n | uniq -u | cat > file.3
但是我得到:
File_3
WORD2
word4
word7
word9
另外我试过:
cat file.1 file.2 | sort -n | uniq -d | cat > file.3
但是我又得到:
File_3
字1
WORD3
的word5
我也尝试了ECHO
echo $(cat file.{1,2} | sort -n | uniq -u) > file.3
但是我得到了同样的文字,最糟糕的是它打印在一行上。
最终的File_3应该包含:
word7
word9
因为在第一个文件中找不到这些单词。
任何想法如何做到这一点?
如果你的文件不大,你可以基本上先捕获两次文件:
cat file.1 file.1 file.2 | sort -n | uniq -u | cat > file.3
但是这对于大文件来说是很昂贵的。
或者使用grep你可以实现这个(感谢@tripleee):
grep -F -x -v -f file.1 file.2 > file.3
尝试这个。
grep -F -x -v -f file.1 file.2 >file.3
也许使用awk:
$ awk 'NR==FNR{a[$0];next}!($0 in a)' file_1 file_2 > file_3 $ cat file_3 word7 word9
你可以使用通讯程序来做到这一点:
comm -13 <(sort file_1) <(sort file_2)