如何保存文件 b 中但不存在于文件 a 中的文件 c 的行,请使用shell脚本,例如:
a.txt 中的内容:
abc
123
zxc
b.txt
中的内容rty
fgh
abc
zxc
456
文件 c.txt 中的结果:
rty
fgh
456
我尝试用join,sort,grep来处理它,但是无法工作。
答案 0 :(得分:1)
在这个版本中,文件中有空格字符,我们想忽略它们:
$ grep -vwFf <(sed 's/[[:space:]]//g' a.txt2) b.txt2
rty
fgh
456
$ grep -vxFf a.txt b.txt
rty
fgh
456
这将返回b.txt中不在a.txt
中的所有行 grep
选项的含义是:
通常,grep会打印匹配的行。 -v
告诉grep执行相反操作并仅打印不匹配的行。
-x
告诉grep匹配整行。
-F
告诉grep我们匹配固定字符串,而不是正则表达式。
-f a.txt
告诉grep从文件a.txt中获取要比较的行。
版本1
如何保存文件b中存在但在文件a到文件c中不存在的行
这些是文件b中的行但不在文件中:
$ grep -vxFf a.txt b.txt
rty
fgh
ghj
456
这与您的样本输出不符。
例如rty
是“存在于文件b中但不存在于文件a中的行”。因此,它在输出中是正确的。
版本2
也许你的意思是你想要文件b中的行也在文件a中。在那种情况下:
$ grep -xFf a.txt b.txt
abc
zxc
这与您的样本输出相匹配。
将此保存在文件c.txt中:
grep -xFf a.txt b.txt >c.txt
答案 1 :(得分:0)