Meu alvo é substituir qualquer palavra / string / qualquer caractere no arquivo
com nova palavra / string de acordo com as seguintes regras:
- Se caracteres numéricos no lado esquerdo da palavra / string, então não substituiremos a palavra
- Se caracteres numéricos no lado direito da palavra / string, então não substituiremos a palavra
observação - numérico significa qualquer número ou [a-z] ou [A-Z]
O exemplo a seguir descreveu o arquivo antes e o arquivo depois:
Eu quero substituir a palavra "$$ OLD_WORD $$" por "& & NEW_WORD & &"
exemplo 1 - arquivo Antes da substituição
more file
ABC$$OLD_WORD$$ABC
$$OLD_WORD$$GG
$$OLD_WORD$$
1$$OLD_WORD$$
exemplo 2 - arquivo após a substituição
more file
ABC$$OLD_WORD$$ABC
$$OLD_WORD$$
&&NEW_WORD&&
1$$OLD_WORD$$
Então, para substituir a palavra sobre as regras (1,2) que mencionei
Eu escrevo a seguinte sintaxe (este comando Perl existe no meu script ksh)
perl -pe 'next if /^#/; s/(\Q|[[:^alnum:]])$ENV{OLD_TEXT}(\E|[[:^alnum:]])/$1$ENV{NEW_TEXT}$2/g' file
Mas este comando perl não substitui o exemplo 2 !!!
O exemplo a seguir descreveu o que recebo da minha máquina Solaris / linux:
export OLD_TEXT='$$OLD_WORD$$'
export NEW_TEXT='&&NEW_WORD&&'
perl -pe 'next if /^#/; s/(\Q|[[:^alnum:]])$ENV{OLD_TEXT}(\E|[[:^alnum:]])/$1$ENV{NEW_TEXT}$2/g' file
&&NEW_WORD&&&&NEW_WORD&&&&NEW_WORD&&&&NEW_WORD&&&&NEW_WORD&& &&NEW_WORD&&ABC$&&NEW_WORD&&$&&NEW_WORD&&OLD_&&NEW_WORD&&WORD$&&NC
&&NEW_WORD&&&&NEW_WORD&&&&NEW_WORD&&&&NEW_WORD&&&&NEW_WORD&&&&NEW_WORD&& &&NEW_WORD&&$&&NEW_WORD&&$&&NEW_WORD&&OLD_&&NEW_WORD&&
&&NEW_WORD&&&&NEW_WORD&&&&NEW_WORD&&&&NEW_WORD&&&&NEW_WORD&&&&NEW_WORD&& &&NEW_WORD&&1$&&NEW_WORD&&$&&NEW_WORD&&OLD_&&NEW_WORD&
Por favor, avise o que eu preciso corrigir na minha sintaxe perl para obter resultados como exemplo 2?
.