Usando 'sed' para localizar e substituir

Usando 'sed' para localizar e substituir

Eu sei que esta pergunta provavelmente já foi respondida antes. 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 de acordo com o arquivo "hello.txt" (no mesmo diretório do prompt). Em qualquer lugar que contivesse a frase "poucos", ela deveria ser alterada para "asd". Como seria o comando?

Responder1

sedé oéfluxoEditor, em que você pode usar |(pipe) para enviarfluxos padrão(STDIN e STDOUT especificamente) sede altere-os programaticamente em tempo real, tornando-o uma ferramenta útil na tradição da filosofia Unix; mas também pode editar arquivos diretamente, usando o -iparâmetro mencionado abaixo.
Considere o seguinte:

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

s/é usado paraésubstitua a expressão encontrada fewpor asd:

Os poucos, os corajosos.


O asd, o corajoso.

/gsignifica "global", ou seja, fazer isso para toda a linha. Se você deixar de fora /g(com s/few/asd/, sempre será necessário haver três barras, não importa o que aconteça) e fewaparecer duas vezes na mesma linha, apenas a primeira fewserá alterada para asd:

Os poucos homens, as poucas mulheres, os corajosos.


Os homens ávidos, as poucas mulheres, os corajosos.

Isto é útil em algumas circunstâncias, como alterar caracteres especiais no início das linhas (por exemplo, substituir os símbolos de maior que que algumas pessoas usam para citar material anterior em tópicos de e-mail por uma tabulação horizontal, deixando uma desigualdade algébrica citada mais tarde na linha intocado), mas no seu exemplo onde você especifica issoem qualquer lugar fewocorrer, ele deve ser substituído, certifique-se de ter isso /g.

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

-iopção é usada para editareun coloque no arquivo hello.txt.

-eopção indica oexpression/command a ser executado, neste caso s/.

Nota: É importante que você use -i -epara pesquisar/substituir. Se fizer isso -ie, você criará um backup de cada arquivo com a letra 'e' anexada.

Responder2

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

g:Global

é:substituto

-eu: tempo real funciona com arquivono lugar

informação relacionada