问题很复杂,但我希望答案很简单,因为我忽视了一些事情。
我想做的是,我试图使用" sed"命令从文件中获取匹配行以来的所有行。
我发现以下命令适用于我的目的:
sed -n '/\[ ocsp \]/,$p' openssl.cnf
但是,我希望将匹配的单词作为变量传入。因此,我需要将引用从单引号更改为双引号。
它没有像我预期的那样工作!
我的理解是,逗号和美元符号告诉sd命令从匹配点打印到文件结尾。我在这里看不到任何有趣的东西。但是,在我更改为双引号后,我收到如下错误消息:
sed: -e expression #1, char 19: unexpected `,'
我试图逃避或将模式匹配到{}符号后放入命令等。没有任何作用。
请在这里寻求帮助。
答案 0 :(得分:0)
内部双引号bash将$var
扩展为var
的值。在单引号内,bash不会以这种方式解释美元符号。因此,如果您更改了引号,则$p
被扩展为(可能)空值并且会出错。只需在上一个$
之前添加单个baskslash。
sed -n "/\\[ ocsp \\]/,\$p" openssl.cnf