我有几个基于每行字数的wordlist文件。
现在,我想生成新文件,应该是:
比较第一个和第二个文件,并将第二个文件中的单词放在第一个文件中,将它们放在第三个文件中。
File_1
WORD1
WORD2
WORD3
word4
的word5
File_2
WORD1
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
WORD1
WORD3
的word5
我还尝试了 ECHO
echo $(cat file.{1,2} | sort -n | uniq -u) > file.3
但我得到相同的词,最糟糕的是它在一行打印。
最终 File_3 应包含:
word7
word9
因为在第一个文件中找不到这些单词。
知道怎么做到这一点吗?
答案 0 :(得分:3)
试试这个。
grep -F -x -v -f file.1 file.2 >file.3
答案 1 :(得分:2)
如果你的文件不大,你基本上可以把第一个文件放两次:
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
答案 2 :(得分:1)
也许使用awk:
$ awk 'NR==FNR{a[$0];next}!($0 in a)' file_1 file_2 > file_3
$ cat file_3
word7
word9
答案 3 :(得分:1)
您可以使用comm程序执行此操作:
comm -13 <(sort file_1) <(sort file_2)