繁体   English   中英

sed:未终止的地址正则表达式

[英]sed: unterminated address regex

根据我对sed的了解,括号内的多个指令应该起作用。

第二个sed命令运行正常。
但是,为什么下面的第一个sed命令会失败?

echo "-------"

sed -e '/UNCOMMENT THIS/,/jmx/ { \
    /foo/d \
    /test/d \
}' \
test.txt

echo "-------"

sed -e '/UNCOMMENT THIS/,/jmx/ { /foo/d; /test/d }' \
test.txt

echo "-------"

的test.txt

  <!--  To enable authentication security checks, uncomment the following security domain name -->
  <!--UNCOMMENT THIS
  foo
  test
  <property name="securityDomain">jmx-console</property>
  -->

在单引号( ' )之间,反斜杠被解释为“实际反斜杠”,因此不会解释转义字符”。

您可以通过在引号环境中使用不带反斜杠的新行来解决此问题:

sed -e '/UNCOMMENT THIS/,/jmx/ {
    /foo/d
    /test/d
}' \
 test.txt

如您所见,您需要在命令末尾提供反斜杠,以确保将test.txt与命令调用分组在一起。 但是bash自动在两个单引号之间对内容进行分组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM