两个文件上的grep反转匹配

两个文件上的grep反转匹配,grep,Grep,例如,我有两个文本文件,每个文件包含一列- 文件A文件B 11 2.2 3.8 如果我做了grep-f File\u A File\u B>File\u C,我会得到包含1和2的File\u C。我想知道如何在两个文件上使用grep-v,以便在上面的示例中获得不匹配的值3和8 谢谢 awk 'NR==FNR{a[$0]=$0;next} !($0 in a) {print a[(FNR)], $0}' f1 f2 3 8 要理解NR和FNR的含义,请检查以下打印输出 awk '{print N

例如,我有两个文本文件,每个文件包含一列-

文件A文件B

11

2.2

3.8

如果我做了
grep-f File\u A File\u B>File\u C
,我会得到包含1和2的File\u C。我想知道如何在两个文件上使用grep-v,以便在上面的示例中获得不匹配的值3和8

谢谢

awk 'NR==FNR{a[$0]=$0;next} !($0 in a) {print a[(FNR)], $0}' f1 f2
3 8
要理解
NR
FNR
的含义,请检查以下打印输出

awk '{print NR,FNR}' f1 f2
1 1
2 2
3 3
4 4
5 1
6 2
7 3
8 4

条件
NR==FNR
用于从第一个文件提取数据,因为
NR
FNR
仅对第一个文件相同。

如果允许空输出定界符,也可以使用
comm

$ # -3 means suppress lines common to both input files
$ # by default, tab character appears before lines from second file
$ comm -3 f1 f2
3
    8
$ # change it to empty string
$ comm -3 --output-delimiter='' f1 f2
3
8

注意:
comm
需要排序输入,因此使用GNU
diff
命令使用
comm-3--output delimiter='(逐行比较文件):

输出(左列包含来自
f1
的行,右列-来自
f2
):



-y,--并排
-两列输出

感谢awk的做法。我对它很陌生。你能告诉我什么是si NR和FNR吗?这两种方法都很有效。正是我想要的。非常感谢。
$ grep -Fxf f1 f2 | grep -hxvFf- f1 f2
3
8
diff --suppress-common-lines -y f1 f2 | column -t
3  |  8