Procura e substitui com uma expressão regular no vi?

0

Eu gostaria de substituir uma string por uma expressão regular que aparece em várias linhas com o caractere "x":

O problema é substituir palavras com x na frente que tenha um inteiro após o x, como em um arquivo que contenha:

x44name
xjanname
x50name

Por exemplo:

:1,2s/x[0-9]name/num/g

Eu precisaria usar sed ou algum outro comando para pesquisar e substituir a palavra?

O seguinte erro ocorre:

E486: Pattern not found: x[0-9]name
    
por Juan Davila 28.05.2015 / 15:52

2 respostas

1

Se você pode ter qualquer número de dígitos (incluindo 0), você deve fazer

:%s/x[0-9]*name/num/g

se for sempre dois

:%s/x[0-9][0-9]name/num/g

é claro que você também pode usar \ d em vez de [0-9]

:%s/x\d*name/num/g
  • %s significa pesquisar o arquivo inteiro
  • s significa apenas pesquisar a linha atual

  • g significa todas as correspondências em uma determinada linha

  • no g significa que apenas a primeira correspondência por linha é substituída
por 28.05.2015 / 16:04
0

Se eu entendi corretamente, e "num" é o próximo número em ordem depois de "x", pegue:

:%s/x\([0-9]\)//g
    
por 28.05.2015 / 16:04