Substituindo. * no vi

2

Eu preciso substituir todas as ocorrências de "asterisco de período", conforme mostrado aqui:

blah blah .*:.*:.* blah blah

com:

[0-9][0-9]:[0-9][0-9]:[0-9][0-9]

para que o resultado final seja assim:

blah blah [0-9][0-9]:[0-9][0-9]:[0-9][0-9] blah blah

Eu tentei variações diferentes das seguintes, mas não funcionou:

%s_ .*:.*:.* _ [0-9][0-9]:[0-9][0-9]:[0-9][0-9] _g
    
por swenson 25.09.2017 / 01:20

3 respostas

2

Para o Vim: :%s/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g

Para sed : sed -e 's/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g' .

  • % significa aplicar a substituição em todas as linhas; não é necessário em sed , onde, por padrão, o comando é aplicado a todas as linhas.
  • \. é um período; um . nulo significa qualquer caractere.
  • \* é um asterisco; um * nulo significa 0 ou mais do átomo anterior.
por 25.09.2017 / 01:38
2

Você deu um exemplo de uma linha com "asterisco de período" repetido três vezes separados por dois pontos. Se os seus dados serão sempre assim, você também pode ficar com a resposta do AlexP . Mas a sua pergunta diz que você precisa substituir todas as ocorrências de “asterisco de período”. Se essa declaração do problema estiver correta, você deve usar

:%s/\.\*/[0-9][0-9]/g

que encontrará e substituirá "asterisco de período" mesmo quando não aparece em grupos de três.

    
por 25.09.2017 / 07:01
0

Usando o modificador nomagic para o padrão no Vim:

:%s/\M.*/[0-9][0-9]/g

O \M removerá o especialidade de . e * no padrão.

Veja :help magic no Vim.

    
por 19.10.2017 / 12:16