我想替换以下perl常规experssion的所有匹配
s@typedef\s*([\w\s<>,:]*)\s(\w+)\s*;@using \2= \1;@g
在文件中。
我这样做了:
/usr/bin/perl -p -i -e "s@typedef\s*([\w\s<>,:]*)\s(\w+)\s*;@using \2= \1;@g" ./file.txt
问题是,只要我将空格留在&#34;使用\ 2 = \ 1&#34;这个替换就不起作用了。 ?我怎样才能做到这一点?
错误: 替换替换未在-e第1行终止。
答案 0 :(得分:0)
您正在调用perl命令的shell正在对您传入的正则表达式进行替换。
使用
/usr/bin/perl -p -i -e 's@typedef\s*([\w\s<>,:]*)\s(\w+)\s*;@using \2= \1;@g' ./file.txt
代替。
这里的区别在于正则表达式是单引号。这可以防止shell替换。