Eu quero substituir várias strings de cada vez usando o comando VIM Editor

1
104116001|PRODUCT|511|RAMP||2016-03-18|2016-03-23|060.00|1||R|012
104116001|PRODUCT|512|RAMP||2016-03-18|2016-03-23|060.00|1||R|012
104116001|PRODUCT|514|RAMP||2016-03-18|2016-03-23|060.00|1||R|012
104116001|PRODUCT|515|RAMP||2016-03-18|2016-03-23|060.00|1||R|012

Acima, quero substituir |511| por |211| da mesma forma que todos os |512| - |212| |514| - |214| e o principal aqui é que eu não quero substituir 515 - 215 (eu quero que seja o mesmo).

E eu usei o comando que você mencionou:

:map <leader>fq :%s/a/b/ge <Bar> %s/c/d/ge <Bar> %s/e/f/ge<CR>  

que não funcionou no meu caso e qualquer ajuda sobre isso é apreciável, obrigado!

    
por saradhi 22.03.2016 / 23:02

1 resposta

2

O que você precisa é de uma expressão regular que começa com 51 e seu terceiro charactar pode ser qualquer 1,2 ou 4. Então você quer substituir a string que combina com a expressão regular desta forma: o primeiro para caracteres de 21 e o terceiro deve ser qualquer caractere que corresponda ao terceiro caractere especificado pela expressão regular (ou seja: sem alteração).

%s/51\([124]\)/21/g

Aqui [124] significa qualquer 1,2 ou 4 e \ ([124] \) significa "vamos lembrar o caractere que combinou [124]". Na string de substituição, \ 1 significa "o caractere que lembramos como a primeira substring lembrada" (para ser mais específico: a substring que correspondeu à parte da expressão regular entre o primeiro par \ (\)).

    
por 22.03.2016 / 23:19

Tags