首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从命令中获取字符串输出,并在文件中搜索该字符串?

从命令中获取字符串输出,并在文件中搜索该字符串?
EN

Stack Overflow用户
提问于 2015-04-29 07:32:13
回答 3查看 62关注 0票数 2

我想知道如何使用命令的输出作为grep的模式参数?特别是,我有这个命令(在另一个问题的帮助下):

代码语言:javascript
复制
grep PATTERN file.txt | awk 'NR == 1 {line = $0; min = $5} NR > 1 && $5 < min {line = $0; min = $5} END{print $5}'

这将在file.txt中搜索其第5列的值最低的行,然后打印该值。但是,我想再次将其重定向到grep中,再次在file.txt中搜索该行,这样我就可以在上面打印至少2行,在下面打印5行(虽然更多不是什么大问题)。

我看了看周围,我知道通过管道输出到grep意味着你要在输出中搜索你给grep的参数--但是我不确定怎么做?

任何帮助都将不胜感激。谢谢!

EN

回答 3

Stack Overflow用户

发布于 2015-04-29 07:33:51

如果您想使用命令的输出作为grep的命令行参数,您可以使用带有$( ...)语法的子subshell。

代码语言:javascript
复制
grep $(grep PATTERN file.txt | awk 'NR == 1 {line = $0; min = $5} NR > 1 && $5 < min {line = $0; min = $5} END{print $5}') Haystack

要获取上面的2行上下文和下面的5行上下文,可以使用-A-B标志。

代码语言:javascript
复制
grep -B2 -A5 $(grep PATTERN file.txt | awk 'NR == 1 {line = $0; min = $5} NR > 1 && $5 < min {line = $0; min = $5} END{print $5}') Haystack
票数 1
EN

Stack Overflow用户

发布于 2015-04-29 07:54:18

不要紧,我想通了。我可以将输出重定向到一个文件,然后使用-f选项grep在该文件中搜索字符串。不管怎样,谢谢你!如果你在阅读这篇文章时遇到和我一样的问题,希望这篇文章能对你有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2015-04-29 12:58:24

为什么不在一个awk中实现所有功能

代码语言:javascript
复制
awk '/PATTERN/ && (!min || $5 < min) {min=$5;c=NR} {a[NR]=$0} END{for (i=c-2;i<=c+5;i++) print a[i]}' file

这将查找字段5具有最低值的行号,并将其存储在c

它还以行号作为索引将所有行存储在数组a中。

然后在end部分,它从数组a中打印出之前的2行和之后的5行,包括命中行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29931723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档