You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用多行Shell变量匹配可执行文件输出中的对应行?

解决方法

你可以用以下两种方式实现需求:

方法一:使用grep的-f选项(推荐)

grep -f 参数支持从输入内容中读取每行作为独立的匹配规则,完美适配你的多行变量场景:

run | grep -f <(echo "$VAR")

这里的 <(echo "$VAR") 是Shell的进程替换语法,会把变量内容转为临时的输入源,让grep用每行的关键词去匹配run输出里的对应行。

方法二:将多行变量转为正则OR模式

把变量中的换行替换成正则的或符号|,再用扩展正则匹配:

run | grep -E "$(echo "$VAR" | tr '\n' '|' | sed 's/|$//')"
  • tr '\n' '|':把变量内的换行符替换为竖线(正则中表示"或")
  • sed 's/|$//':移除最后多余的竖线,避免正则语法错误

为什么之前的尝试失败?

直接执行 run | grep "$VAR" 时,grep会把多行的$VAR视为一个包含换行的完整匹配模式,它只会寻找同时包含aaa、bbb、ggg且顺序与换行一致的行,这和你的需求完全不符。

内容的提问来源于stack exchange,提问作者papabread

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:10:21