为什么会失败?
WGroleau@MBP Chords % perl -p -i -e '(Trinidad|Donoso|Clifton|Frincke|Little|Church|Antonio) XYZ :\1\t:g;' *txt
Bareword found where operator expected at -e line 1, near ") XYZ"
(Missing operator before XYZ?)
我过去曾多次使用过这种语法,没有出现此错误(据我所记得)。
答案1
您能否测试一下:
perl -i -pe 's:(Trinidad|Donoso|Clifton|Frincke|Little|Church|Antonio) XYZ :$1\t:g' *txt
您错过了替换的第一部分:
s:
而在 perl 中,捕获组是$1
,不是\1
(也许在两种情况下都可以工作)。