首页 文章

sed,逗号,美元符号,单引号和双引号

提问于
浏览
0

这个问题很复杂,但我希望答案很简单,因为我忽视了一些事情 .

我正在尝试做的是,我正在尝试使用“sed”命令从文件中获取匹配行以来的所有行 .

我发现以下命令适用于我的目的:

sed -n '/\[ ocsp \]/,$p' openssl.cnf

但是,我希望将匹配的单词作为变量传入 . 因此,我需要将引用从单引号更改为双引号 .

它不像我预期的那样工作!

我的理解是,逗号和美元符号告诉sd命令从匹配点打印到文件结尾 . 我在这里看不到任何有趣的东西 . 但是,在我更改为双引号后,我收到如下错误消息:

sed: -e expression #1, char 19: unexpected `,'

我试图逃避或将模式匹配到{}符号后放入命令等 . 没有任何作用 .

请在这里寻求帮助 .

1 回答

  • 0

    内部双引号bash将 $var 扩展为 var 的值 . 单引号内部bash不会以这种方式解释美元符号 . 因此,如果您更改了引号,则 $p 会扩展为(可能)空值并且会出错 . 只需在上一个 $ 之前添加单个baskslash .

    sed -n "/\\[ ocsp \\]/,\$p" openssl.cnf
    

相关问题