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

标签 linux bash shell awk grep

我想知道如何使用命令的输出作为 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/

相关文章:

python - python 中的 usb 自动检测 for linux env

linux - 无法取消设置 linux 环境变量

linux - 如何为一长串 CL 命令创建别名(缩写版本)?

Bash:路径为\

linux - 比较目录中文件名(不带扩展名)的 Shell 脚本

linux - 创建目录结构的 Bash 脚本

c - 什么是通用信号量范围?

bash - xdotool 记录器

linux - 使用 GNU parallel 在巨大的目录树上加速查找命令的最佳方法是什么?

python - 如何在shell脚本中修改rc.local?