我运行几个替换命令作为maven 的 colorize 脚本的核心。其中一个sed
命令使用了一个正则表达式,该表达式在 shell 中起作用,如此处所讨论的。当前(不工作)的实现可以在这里找到。
当我将命令的变体之一包含到脚本中时,会发生不同的行为:
变体 1:
$ sed -re "s/([a-zA-Z0-9./\\ :-]+)/\1/g"
适应脚本:
-re "s/WARNING: ([a-zA-Z0-9./\\ :-]+)/${warn}WARNING: \1${c_end}/g" \
错误: shell 输出的信息与我输入的信息相同$ sed
。奇怪的!?
变体 2:
$ sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g"
适应脚本:
-e "s/WARNING: \([a-zA-Z0-9./\\ :-]\+\)/${warn}WARNING: \1${c_end}/g" \
错误:
sed: -e 表达式 #7, char 59: 's' 命令的 RHS 上的无效引用 \1