我正在尝试在XML文件中找到一些文本,并仅删除包含该文件的行的一部分
在一些代码搜索后,我发现这种格式可以尝试:perl -p -i -e "s/$1/$2/g" $3
。
所以我正在使用这段代码:
perl -p -i.bak -e "s/\'../../../specialText/\'//g" "C:/box/fileName.XML";
我想要做的是删除内部单引号中的所有内容,如: '../../../ specialText /',但使用q()或\'来逃避引用不起作用,我不确定..是'不是'也搞砸了。我猜测没有把任何东西作为文本替换将正确删除它,但我不确定。
错误是:
反斜杠找到操作符在-e line 1附近的位置,靠近“/ specialText / \”
(在\?之前缺少运算符) 语法错误在-e第1行,靠近“/ specialText / \”
如何重写这一个班轮来实现这个目标?
这样做。
C:\box>perl -p -i.bak -e s/Copyright/bar/g Test.txt
我在另一个文件上尝试过,所以现在我只需要用它来修改我的原文。
答案 0 :(得分:3)
您可以通过在每个字符前添加反斜杠(.
)来转义搜索字符串中的/
和\
个字符。
但是,为了避免严重leaning toothpick syndrome,我建议改为使用其他正则表达式分隔符以及\Q
和\E
escape sequences,如下所示:
perl -p -i.bak -e "s(\Q'../../../specialText/'\E)()g" "C:/box/fileName.XML"
答案 1 :(得分:1)
使用另一组分隔符有什么问题?
perl -p -i.bak -e "s{'../../../specialText/'}{}g" "C:/box/fileName.XML"