regex - 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/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/

相关文章:

perl - 如何在Perl中自动初始化所​​有标量变量?

c# - 使用正则表达式对时间进行日期验证

Javascript 正则表达式 : if a letter is adjacent to a number, 添加下划线

linux - 构建 Qemu - 未知目标名称 'arm-softmmu'

iphone - 用于镜像 iphone 开发的 linux 语言

perl - 证明命令在 arisdottle 之后不传递参数

ruby - 在正则表达式中使用 var 时出现错误 "empty range in char class"

javascript - 更改正则表达式以仅接受指定字符?

linux - Linux 上的 msemaphore?

Perl SOAP 服务器不再返回 base64