搜索模式并使用带有双代码(“)和变量的SED显示。
实际日志为:
<confirmation ID="123456-109" status>
想要打印109
这与实际的sed命令一起起作用:
sed -n 's%.*confirmation="123456-\(.*\)" status.*%\%p' /tmp/log
输出:109
但是当我尝试在将123456作为变量传递的脚本中使用此命令时,它将无法正常工作。
req_data=`sed -n 's%.*confirmation="$variable-\(.*\)" status.*%\%p' /tmp/log`
当我在Script中运行时,没有提供任何输出。
我希望输出:109
答案 0 :(得分:0)
执行一个command
并将其输出作为res
分配给变量res="$(command)"
。
您需要使用sed -E
来使括号适用于分组(或在正常模式下,必须转义每个括号)。 (请注意,-E
的{{1}}选项不是sed
标准的一部分)
此外,如注释中所述,变量不会在单引号内展开/插入。如果您用单引号引起来,请在变量之前将其终止,并在变量之后开始另一个模块。
以下应解决所有上述问题,并应解决您的问题。
posix