繁体   English   中英

sed:-e表达式#1,字符66:未终止的s命令

[英]sed: -e expression #1, char 66: unterminated `s' command

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

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

对于此代码,我得到了错误“ sed:-e表达式#1,字符66:未终止的s命令”。这是什么意思?

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

  1. replace命令必须以/加上任何修饰符结尾。

  2. 有几种正则表达式“风味”,并且sed使用Basic POSIX正则表达式,这意味着()应该转义以捕获匹配的组。 查看此答案以获取详细信息。

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

考虑到这一点,以下sed表达式应该可以解决问题:

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

暂无
暂无

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

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