【发布时间】:2018-11-16 16:26:12
【问题描述】:
我正在尝试替换以下内容(以最简单的形式)
{filedir_9}file.jpg
与
{filedir_7}file.jpg
使用
sed -i -e 's/(\{filedir_9\})([a-z\-\_0-9]+).jpg/\{filedir_7\}$2$3/g'
但我得到:RE 错误:重复计数无效
【问题讨论】:
-
试试
sed -i '' -e 's/{filedir_9}\([-a-z_0-9]\{2,\}\)\.jpg/{filedir_7}\1/g'。如果您尝试捕获两个子模式,为什么要使用 Group 3 占位符?请注意,\{在 POSIX BRE 模式中打开一个限制量词,您需要{来匹配文字{。要创建捕获组,您需要\(...\),而不是(...),并且在替换中,您应该使用\1来引用组1 值。在 POSIX 模式中,不支持括号表达式内的转义序列,您应该将-放在模式的开始/结束处,转义它不起作用。 -
谢谢你,这帮助我得到了我需要的东西
-
我发布了一个带有更多解释的答案。