linux – 基于黑名单的grep – 没有程序代码?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 基于黑名单的grep – 没有程序代码?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1180字,纯文字阅读大概需要2分钟。
内容图文
![linux – 基于黑名单的grep – 没有程序代码?](/upload/InfoBanner/zyjiaocheng/968/81b12d823ea64211a6d45ad417617344.jpg)
这是一个众所周知的任务,很容易描述:
给定一个文本文件foo.txt和一个排除字符串的黑名单文件,每行一个,生成foo_filtered.txt,它只包含不包含任何排除字符串的foo.txt行.
常见的应用程序是从构建日志中过滤编译器警告,但忽略对不属于您的文件的警告.文件foo.txt是警告文件(本身从构建日志中过滤掉),黑名单文件excluded_filenames.txt,文件名,每行一个.
我知道它是如何在像Perl或AWK这样的过程语言中完成的,我甚至用剪辑,通信和排序等Linux命令组合完成了它.
但我觉得我应该与xargs非常接近,而且看不到最后一步.
我知道如果excluded_filenames.txt中只有1个文件名,那么
grep -v foo.txt `cat excluded_filenames.txt`
会做的.
而且我知道我可以获得每行一个文件名
xargs -L1 -a excluded_filenames.txt
那么如何将这两者合并为一个解决方案,而不使用过程语言中的显式循环?
寻找简单而优雅的解决方案.
解决方法:
你应该使用-f选项(或者你可以使用相同的fgrep):
grep -vf excluded_filenames.txt foo.txt
您也可以使用-F,它更直接地解答您的问题:
grep -vF "`cat excluded_filenames.txt`" foo.txt
来自man grep
-f FILE, --file=FILE
Obtain patterns from FILE, one per line. The empty file contains zero patterns, and therefore matches nothing.
-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched.
内容总结
以上是互联网集市为您收集整理的linux – 基于黑名单的grep – 没有程序代码?全部内容,希望文章能够帮你解决linux – 基于黑名单的grep – 没有程序代码?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。