我想知道如何使用命令的输出作为 grep
的模式参数?特别是,我有这个命令(在另一个问题的帮助下):
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 行(尽管更多不是'a大不了)。
我环顾四周,我知道将输出管道输出到 grep
意味着您在该输出中搜索您提供给 grep
的参数 - 但我不确定如何反过来做?
如有任何帮助,我们将不胜感激。谢谢!
最佳答案
如果您想将命令的输出用作 grep 的命令行参数,您可以使用具有 $( ...)
语法的子 shell。
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
标志。
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
关于linux - 从命令中获取字符串输出,并在文件中搜索该字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931723/