linux – grep行存在于一个文件中但不存在于另一个文件中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – grep行存在于一个文件中但不存在于另一个文件中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1047字,纯文字阅读大概需要2分钟。
内容图文
我正在尝试使用简单的grep和grep -v,因此我将从b.txt中存在的a.txt中获取行,而不是在c.txt中.
3个文件的示例
A.TXT:
a
b
c
d
e
up.txt:
a.up
b.up
c.up
dw.txt:
a.dw
b.dw
期望的输出:
c
我编写了下面的代码,但grep一次看$(sed …)作为一行,而不是整体:
sed 's/.up//' /tmp/b.txt | grep -f /tmp/a.txt | grep -vf $(sed 's/.dw//' /tmp/c.txt)
解决方法:
假设文件都已排序,并且我们正在使用了解过程替换的shell(如bash):
$join -t . -v 1 -o 0 <( join -t . a.txt b.txt ) c.txt
c
或者,对于其他贝壳,
$join -t . a.txt b.txt | join -t . -v 1 -o 0 - c.txt
c
这使用连接两次来执行文件之间的关系连接.数据被解释为点分隔字段(使用-t.).
a.txt和b.txt之间的连接是直接的并且产生
a.up
b.up
c.up
这些是两个文件中的所有行,它们在两个文件中都出现了第一个以点分隔的字段.输出包括连接字段(a,b,c),后跟两个文件中的其他字段(仅b.txt具有任何其他数据).
第二次加入有点特别.使用-v 1,我们要求查看第一个文件中的条目(上面的中间结果),这些条目不能与第二个文件c.txt中的任何行配对.另外,我们只要求查看连接字段本身(-o 0).如果没有-o标志,我们会得到c.up作为结果.
如果文件未排序,则文件名文件的每次出现都可以用命令中的<(排序文件)替换.
内容总结
以上是互联网集市为您收集整理的linux – grep行存在于一个文件中但不存在于另一个文件中全部内容,希望文章能够帮你解决linux – grep行存在于一个文件中但不存在于另一个文件中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。