我有一个文本文件,其中包含前缀为A_B _的字符串。
示例:A_B_Monday
我想用A_B_*
替换X_Y_*
的所有出现,除非*是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似乎不起作用。我在Strawberry Perl上。
更新: 这对我有用 perl -i.bak -pE“s / A_B _(?!Geneva)/ USB_EP_ / g”File.Txt
答案 0 :(得分:3)
也许:
s/^A_B_(?!C)/X_Y_/;
或:
s/^A_B_(?!C)/X_Y_/i;
答案 1 :(得分:3)
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
答案 2 :(得分:1)
$line =~ s/^A_B_([^C])/X_Y_$1/;
您应该为文件的每一行执行此操作。