desenv-web-rp.com

Usando 'sed' para encontrar e substituir

Eu sei que esta pergunta provavelmente já foi respondida antes. Eu já vi muitos tópicos sobre isso em vários lugares, mas as respostas geralmente são difíceis de extrair para mim. Estou procurando ajuda com um exemplo de uso do comando 'sed'.

Digamos que eu queira agir com base no arquivo "hello.txt" (no mesmo diretório do prompt). Em qualquer lugar que contenha a frase "poucos", deve ser alterado para "asd". Como seria o comando?

338
roo

sed é a sequência s ed itor , na medida em que você pode usar | (canal) para enviar fluxos padrão (STDIN e STDOUT especificamente) através de sed e alterá-los programaticamente em tempo real, tornando-o uma ferramenta útil na tradição da filosofia Unix; mas também pode editar arquivos diretamente, usando o -i parâmetro mencionado abaixo.
Considere o seguinte :

sed -i -e 's/few/asd/g' hello.txt

s/ é usado para s substituir a expressão encontrada few com asd:

Os poucos, os corajosos.


O asd, o corajoso.

/g significa "global", o que significa fazer isso para toda a linha. Se você deixar o /g (com s/few/asd/, sempre há três barras, não importa o que) e few aparece duas vezes na mesma linha, apenas o primeiro few é alterado para asd:

Os poucos homens, as poucas mulheres, os corajosos.


Os homens asd, as poucas mulheres, os corajosos.

Isso é útil em algumas circunstâncias, como alterar caracteres especiais no início das linhas (por exemplo, substituir os símbolos maiores que algumas pessoas usam para citar o material anterior nos threads de email por uma guia horizontal, deixando uma desigualdade algébrica entre aspas mais adiante. intocado), mas no seu exemplo em que você especifica que em qualquer lugarfew ocorre que deve ser substituído, verifique se você possui /g.

As duas opções a seguir (sinalizadores) são combinadas em uma, -ie:

-i é usada para editar i n lugar no arquivo hello.txt.

-e opção indica a e xpression/comando para executar, neste caso s/.

Nota: é importante que você use -i -e para pesquisar/substituir. Se você fizer -ie, você cria um backup de cada arquivo com a letra 'e' anexada.

630
Mohammad Etemaddar
sed -i 's/fea/asd/g'  hello.txt

g: Global

s: substituto

- i: trabalha em tempo real com o arquivo inplace

75
PersianGulf