SED 正则表达式匹配 EOF 并替换/插入

SED 正则表达式匹配 EOF 并替换/插入

我使用以下命令成功找到我的锚点(正则表达式模式)并将其替换为文件(文件路径)内的参数值。

sed -i $"/$ANCHOR/i \\$PARAMVALSEDINS" "$FILEPATH"

我需要的是当我的 Anchor 为 '' (空)时匹配我的 EOF 并在那里进行替换。

所以我想象做这样的事情:

如果 ANCHOR='' 则 ANCHOR='$EOF' 以便 SED 成功找到 EOF 并继续进行替换。

这可以做到吗?除了这个之外找不到任何具体内容:

sed -i -e "\$aPARAMVALSEDINS" "$FILEPATH"

但是,这不涉及ANCHOR变量,如果我的问题无法得到解答,我将实现它。

附言。当然,完全可以使用另一种方法。也许有一种方法可以使用另一个命令来做到这一点,该命令确实有助于正则表达式区域内的正则表达式匹配和 EOF 匹配?例如另一个 -i $"/$ANCHOR/i \$PARAMVALSEDINS" "$FILEPATH" 其中如果 $ANCHOR 可以匹配 EOF

谢谢

答案1

[[ -z $ANCHOR ]] && ANCHOR='$' || ANCHOR="/$ANCHOR/"
sed -i "${ANCHOR}i \\$PARAMVALSEDINS" "$FILEPATH"

答案2

$ ANCHOR=${ANCHOR:+"/$(printf '%s\n' "$ANCHOR" | sed -e 's:[][\/.^$*]:\\&:g')/"}

$ sed -i  -e "${ANCHOR:-\$}i \\$PARAMVALSEDINS" "$FILEPATH"

第一步,转义锚变量的内容,使其能够稳健地用作 sed 匹配括号中的表达式。

在下一步中,如果我们发现锚变量为空,我们将在其位置使用文字 $ 符号,然后 sed 将其解释为 EOF。

HTH。

注意:确保 paramvalsedins var 在使用之前同样进行转义。

相关内容