Usando sed para encontrar uma palavra e substituir outra palavra

1

Eu tenho uma palavra como "modo v" em um arquivo. Eu quero substituí-lo para "mode sv". No entanto, todos os meus esforços falharam, pois há espaço após o modo

    
por Artist In 23.09.2014 / 23:41

2 respostas

1

Você pode ter sed fazendo a pesquisa e a substituição assim.

$ sed 's/mode v/mode sv/g'

Exemplo

Digamos que eu tenha este arquivo de amostra:

$ cat afile.txt 
mode v modev mode v
blah
blah blah modev mode
blah
modev mode v

Eu posso usar sed para pesquisar / substituir este arquivo e preservar um backup assim:

$ sed -i.bak 's/mode v/mode sv/g' afile.txt 

Agora tenho dois arquivos:

$ ls -ltr | grep afile
-rw-rw-r--. 1 slm slm      64 Sep 23 20:13 afile.txt.bak
-rw-rw-r--. 1 slm slm      67 Sep 23 20:15 afile.txt

Com as alterações feitas no original:

$ cat afile.txt
mode sv modev mode sv
blah
blah blah modev mode
blah
modev mode sv

OBSERVAÇÃO: Se você precisar de um limite de palavras garantido, poderá sufixar o mode v na pesquisa com \b .

$ sed -i.bak 's/mode v\b/mode sv/g' afile.txt 
    
por 24.09.2014 / 02:17
1

A sua solução de comentário só funciona se o modo for a primeira palavra da linha e substituir tudo após "mode" por "sv". De sua pergunta eu acredito que esta não é sua intenção. Não há razão para complicar as coisas, simples

sed 's/mode /mode s/g'

deve funcionar. Alternativamente

sed s/"mode "/"mode s"/g
    
por 24.09.2014 / 00:32

Tags