perl+;将规则添加到perl单行命令
下面的Perl语法将旧的替换为新的,但如果旧单词之前或之后存在数字,则不会这样做perl+;将规则添加到perl单行命令,perl,Perl,下面的Perl语法将旧的替换为新的,但如果旧单词之前或之后存在数字,则不会这样做 OLD=ABBA1 ; export OLD NEW=OBAMA1 ; export NEW perl -i -pe 'next if /^ *#/; s/(\b|\D)$ENV{OLD}(\b|\D)/$1$ENV{NEW}$2/g' file 我的问题: 如果a-z或a-z字母出现在旧单词之前或之后,我也不想用新字母替换旧字母 OLD=ABBA1 ; export OLD NEW=OBAMA1 ;
OLD=ABBA1 ; export OLD
NEW=OBAMA1 ; export NEW
perl -i -pe 'next if /^ *#/; s/(\b|\D)$ENV{OLD}(\b|\D)/$1$ENV{NEW}$2/g' file
我的问题:
如果a-z或a-z字母出现在旧单词之前或之后,我也不想用新字母替换旧字母
OLD=ABBA1 ; export OLD
NEW=OBAMA1 ; export NEW
perl -i -pe 'next if /^ *#/; s/(\b|\D)$ENV{OLD}(\b|\D)/$1$ENV{NEW}$2/g' file
请建议如何更改我的Perl语法以实现此目的
示例(旧单词需要替换为新单词):
这对我很有用:
OLD=ABBA1 ; export OLD
NEW=OBAMA1 ; export NEW
perl -pe 'next if /^ *#/;
s/(\b|[[:^alnum:]])$ENV{OLD}(\b|[[:^alnum:]])/$1$ENV{NEW}$2/g' <<!
ABBA1R - not replace
QABBA1 - not replace
ABBA1W - not replace
@ABBA1 - replace
ABBA1= - replace
ABBA1w - not replace
4ABBA1 - not replace
ABBA11 - not replace
e ABBA1 - replace (remark between e to ABBA1 I have space)
ABBA1 p - replace (remark between ABBA1 to p I have space)
?ABBA1 - replace
_ABBA1_ - replace
!
看看我的问题,如果a-z或a-z之前或之后的旧词,然后不需要更换!!!您需要捕获括号才能使用
$1
和$2
;s/$ENV{OLD}/$1$ENV{NEW}$2/g'文件,在那之后,ABBA1R被OBAMA1替换为什么?嗨,ABBA1必须被替换,请你能把它添加到code@JonathanLeffler对我的错误表示抱歉,但请添加定义为将“ABBA1”替换为“OBAMA1”的规则
ABBA1R - not replace
QABBA1 - not replace
ABBA1W - not replace
@OBAMA1 - replace
OBAMA1= - replace
ABBA1w - not replace
4ABBA1 - not replace
ABBA11 - not replace
e OBAMA1 - replace (remark between e to OBAMA1 I have space)
OBAMA1 p - replace (remark between OBAMA1 to p I have space)
?OBAMA1 - replace
_OBAMA1_ - replace