【问题标题】:sed, comma, dollar sign, single quote and double quotesed、逗号、美元符号、单引号和双引号
【发布时间】:2018-06-19 10:21:30
【问题描述】:

这个问题很复杂,但我希望答案很简单,因为我忽略了一些东西。

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

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

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

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

它没有像我预期的那样工作!

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

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

我尝试转义或在匹配模式后将命令放入 {} 符号等。没有任何效果。

这里需要一些帮助。

【问题讨论】:

    标签: regex linux shell unix sed


    【解决方案1】:

    在双引号内,bash 将 $var 扩展为 var 的值。在单引号内 bash 不会以这种方式解释美元符号。因此,如果您更改了引号,那么$p 将被扩展为(可能)空值并产生错误。只需在最后一个 $ 之前添加一个 baskslash。

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

    【讨论】:

    • 非常感谢您的快速回答。我记得我已经尝试过但没有用,但我一定也犯了其他错误,现在它可以工作了。所以,再次感谢您!
    猜你喜欢
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多