我处理以下文件:
more file1
name="UAT/CC/Global/MES/UK/adWerum-UK"
name="UAT/CC/Global/MES/UK/adWerum-UK-Adapter"
name="UAT/CC/Global/MES/UK/adWerum-UK1"
name="HOME/UAT/CC/Global/ME/UK/adWerum-UK"
我创建了以下 perl 命令,以便只删除带有反斜杠的字符串
UAT/CC/Global/ME/UK/adWerum-UK
perl 语法:
perl -n -i -e 'print unless m/\Q$ENV{A}\E/' file1
问题是 perl 删除了包含以下行的所有行:
UAT/CC/Global/ME/UK/adWerum-UK
例子
A=UAT/CC/Global/MES/UK/adWerum-UK
export A=UAT/CC/Global/ME/UK/adWerum-UK
perl -n -i -e 'print unless m/\Q$ENV{A}\E/' file1
.
more file1
file is empty
虽然预期的结果是
name="UAT/CC/Global/MES/UK/adWerum-UK-Adapter"
name="UAT/CC/Global/MES/UK/adWerum-UK1"
name="HOME/UAT/CC/Global/ME/UK/adWerum-UK"
请告知我的 perl 语法需要更改哪些内容,以便仅删除双配额之间匹配字符串的行
最佳答案
为什么不在正则表达式模式中包含双引号?
perl -i -ne 'print unless /"\Q$ENV{A}\E"/' file1
关于regex - perl + 仅当与行中的字符串完全匹配时才删除该行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41854555/