Linux 如何只打印不需要';两个文件之间不匹配?

Linux 如何只打印不需要';两个文件之间不匹配?,linux,Linux,文件1: 文件2: cat dog house tree 我只需要打印: house如果您只需要单词,您可以对文件进行排序,区分它们,然后使用sed过滤出不同的符号: dog cat tree diff使用awk diff <(sort file1) <(sort file2) | sed -n '/^</s/^< //p' 首先用FILE2中的单词构建一个关联数组,然后在FILE1上循环并只打印这些单词 使用comm awk 'FNR==NR{arr[$0]=1;

文件1:

文件2:

cat
dog
house
tree
我只需要打印:
house

如果您只需要单词,您可以对文件进行排序,区分它们,然后使用
sed
过滤出不同的符号:

dog
cat
tree
diff使用awk

diff <(sort file1) <(sort file2) | sed -n '/^</s/^< //p'
首先用FILE2中的单词构建一个关联数组,然后在FILE1上循环并只打印这些单词

使用
comm

awk 'FNR==NR{arr[$0]=1; next} !($0 in arr)' FILE2 FILE1
comm-2-3Awk是这里的一个选项:

comm -2 -3 <(sort FILE1) <(sort FILE2)
使用file2的内容作为索引,创建一个名为arr的数组。然后使用file1,查看每个条目并检查数组arr中是否存在条目。如果没有,请打印

awk 'NR==FNR { arr[$1]="1" } NR != FNR { if (arr[$1] == "") { print $0 } } ' file2 file1

-v
标志仅显示不匹配,
-f
用于文件名用作筛选器,
-f
用于精确匹配(不会因任何模式匹配而减慢速度)。

diff FILE1 FILE2
$ cat file1
cat
dog
house
tree

$ cat file2
dog
cat
tree

$ grep -vF -f file2 file1
house