Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex perl+;仅当与行中的字符串完全匹配时才删除该行_Regex_Linux_Perl - Fatal编程技术网

Regex perl+;仅当与行中的字符串完全匹配时才删除该行

Regex perl+;仅当与行中的字符串完全匹配时才删除该行,regex,linux,perl,Regex,Linux,Perl,我处理以下文件: 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/adWer

我处理以下文件:

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

而预期的结果是

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

我试过了,但是所有的行都打印出来了,没有删除相关的行(我的perl版本-v5.10.1)@Jogeff:答案很好;您在环境变量中犯了一个错误。您在
导出
命令中使用了
/ME/UK/
而不是
/MES/UK/
perl -i -ne 'print unless /"\Q$ENV{A}\E"/' file1