[英]Perl : Selective string substitution
我有一个文本文件,其中包含带有前缀A_B_的字符串。
示例: A_B_Monday
我想用X_Y_*
替换A_B_*
所有出现,除非*是C
因此,必须将所有A_B_*
但不是A_B_C
字符串替换为X_Y_*
。
在perl中应该怎么做?
编辑:1上面的*是一个字符串。 因此,所有不是A_B_Geneva的A_B_ *都应替换为X_Y_NewYork。 perl -pi.bak -e's / ^ A_B _(!Geneva)/ X_Y_ / g;' File.Txt似乎不起作用。 我在草莓Perl上。
更新:这对我有用perl -i.bak -pE“ s / A_B _(?! Geneva)/ USB_EP_ / g” File.Txt
也许:
s/^A_B_(?!C)/X_Y_/;
要么:
s/^A_B_(?!C)/X_Y_/i;
s/^A_B_(?!Type\z)/X_Y_/;
没有\\z
, A_B_Typed
不会像应有的那样更改为X_Y_Typed
。
您可以按以下方式使用它:
perl -pi.bak -pe"s/^A_B_(?!Type\z)/X_Y_/g" file
$line =~ s/^A_B_([^C])/X_Y_$1/;
您应该对文件的每一行执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.