经过一些文字操作后,我得到了输出:“75皇后”。我这样发了:
..( 75 queen ).. | sed 's/ \([0-9]*\) \(q.*) /The word \2 with \1 appearances.'
对于这段代码我收到错误“sed:-e expression#1,char 66:unterminated`s”命令。 这是什么意思?
答案 0 :(得分:1)
您的sed
表达式中有几个问题需要解决:
替换命令必须以/
加上任何修饰符结束。
有几种正则表达式"口味"并且sed
使用Basic POSIX正则表达式,这意味着应该转义()
以捕获匹配的组。有关详细信息,请查看此uniform。
您似乎想要捕获75
和queen
。为此,您需要指定第一组应匹配任意数量的数字,第二组应捕获q
后跟任意数量的字符。 *
将匹配0次或更多次重复,+
(应该转义)将匹配1次或更多次重复。
考虑到这一点,下面的sed
表达式可以解决这个问题:
echo '..( 75 queen )..' | sed 's/ \([0-9]\+\) \(q.*\) /The word \2 with \1 appearances./'