0

我有一个包含前缀为 A_B_ 的字符串的文本文件。

例子:A_B_Monday

我想替换所有出现的A_B_*with ,X_Y_*除非 * is 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

4

3 回答 3

3

也许:</p>

s/^A_B_(?!C)/X_Y_/;

或者:

s/^A_B_(?!C)/X_Y_/i;
于 2012-08-03T05:25:52.957 回答
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
于 2012-08-03T05:42:57.027 回答
1
$line =~ s/^A_B_([^C])/X_Y_$1/;

您应该为文件的每一行执行此操作。

于 2012-08-03T05:25:51.090 回答