sed:-e表达式#1,char 66:未终止的`s'命令

时间:2015-11-19 17:08:04

标签: linux bash sed error-handling

经过一些文字操作后,我得到了输出:“75皇后”。我这样发了:

..( 75 queen ).. | sed 's/ \([0-9]*\) \(q.*) /The word \2 with \1 appearances.'

对于这段代码我收到错误“sed:-e expression#1,char 66:unterminated`s”命令。 这是什么意思?

1 个答案:

答案 0 :(得分:1)

您的sed表达式中有几个问题需要解决:

  1. 替换命令必须以/加上任何修饰符结束。

  2. 有几种正则表达式"口味"并且sed使用Basic POSIX正则表达式,这意味着应该转义()以捕获匹配的组。有关详细信息,请查看此uniform

  3. 您似乎想要捕获75queen。为此,您需要指定第一组应匹配任意数量的数字,第二组应捕获q后跟任意数量的字符。 *将匹配0次或更多次重复,+(应该转义)将匹配1次或更多次重复。

  4. 考虑到这一点,下面的sed表达式可以解决这个问题:

    echo '..( 75 queen )..' | sed 's/ \([0-9]\+\) \(q.*\) /The word \2 with \1 appearances./'