Como você faz várias substituições sed

Como você faz várias substituições sed
O comando sed (editor de fluxo) pode executar várias funções em fluxos no Unix/Linux. Por exemplo: pesquisar, encontrar e substituir, inserção/exclusão, etc. No entanto, é usado principalmente para encontrar e substituir textos. O comando sed permite editar arquivos sem abri -los. Por ser uma ferramenta de linha de comando, também pode ser implementada em scripts.

Neste guia, mostraremos como executar as múltiplas substituições de sed em um único arquivo.

Substituindo o texto usando sed

Criando um texto de amostra
O comando sed opera uma tarefa definida em um fluxo. Para fins de demonstração, vamos criar um arquivo dummy para servir como o fluxo. Crie um arquivo de texto usando o seguinte comando:

gato < test.txt
a rápida Raposa marrom
pula sobre o cachorro preguiçoso
Eof

Verifique o conteúdo do arquivo usando o seguinte comando:

$ Teste CAT.TXT

Substituindo o texto
Para substituir os textos, a estrutura de comando geral é a seguinte:

$ sed 's /// g'

Aqui, sed pesquisas pelo padrão especificado no fluxo fornecido e substitui -o pelo texto de substituição fornecido. A bandeira G garante que sed pesquise o texto inteiro por padrões correspondentes.

Vamos experimentar em nosso arquivo de demonstração. Execute o seguinte comando:

$ sed 's/the/hello/g' teste.TXT

Executando várias substituições

No último exemplo, substituímos um único padrão de texto. E se você quisesse substituir vários padrões?

Existem algumas maneiras diferentes de fazer isso. Podemos fazer isso dentro de um único comando sed ou dividi -lo em vários.

Múltiplas substituições em um único comando sed
Podemos passar as múltiplas expressões para sed usando a bandeira -e. Dê uma olhada no exemplo a seguir:

$ sed -e 's/the/hello/g' -e 's/preguiçoso/cansado/' teste.TXT

Aqui, a primeira expressão substitui "o" por "olá". A segunda expressão substitui "preguiçosa" por "cansado".

Em vez de declarar múltiplas expressões, também podemos combiná -las em uma única expressão, cada parte separada por um semicolon (;). Dê uma olhada no exemplo a seguir:

$ sed -e 's/the/hello/g; s/preguiçoso/cansado/' teste.TXT

Se você estiver executando o mesmo conjunto de comandos sed repetidamente, podemos colocá -los em um único arquivo. Podemos passar o arquivo como fonte de comandos para sed usando a bandeira -f. A estrutura de comando se parece com o seguinte:

$ sed -f

Vamos colocar em ação. Nós compilamos todos os comandos sed que queremos executar nos comandos de arquivo.TXT.

comandos de $ CAT.TXT

Observe que toda expressão de sed exclusiva é colocada em uma nova linha para melhorar a clareza visual. No entanto, você também pode usar a técnica semicolon para mesclar todas as expressões em uma única expressão.

Agora, podemos especificar este arquivo para sed como a lista de expressões para executar no fluxo especificado:

comandos $ sed -f.teste txt.TXT

Múltiplos substituições de sed com vários comandos sed
Esta é uma abordagem mais direta. Em vez de usar qualquer truque sofisticado, filtramos o fluxo usando um comando sed e passamos a saída para os outros comandos sed.

Dê uma olhada no exemplo a seguir:

$ sed 's/the/hello/g' teste.txt | sed 's/preguiçoso/cansado/'

Aqui, o primeiro comando sed substitui "o" com "olá". A saída é então canalizada para o segundo comando sed que substitui "preguiçoso" por "cansado".

Embora esse método seja simples, ele pode se tornar redundante com muita facilidade, especialmente se você precisar executar várias expressões sed. Nesse caso, o uso do arquivo de comando sed é a maneira mais eficiente.

Conclusão

Neste guia, exploramos as várias maneiras de como podemos realizar as múltiplas substituições usando sed. Demonstramos como passar as múltiplas expressões usando a bandeira -e. Compressamos ainda mais as múltiplas expressões em uma única expressão usando os semicolons. Para uma carga de trabalho mais repetitiva, também demonstramos o uso de um arquivo de texto para executar as múltiplas expressões Sed de uma só vez.

Finalmente, exploramos o uso do SED de uma maneira simples: tubular a saída de um comando sed para outro.

Neste guia, os comandos sed não alteram o conteúdo do arquivo. Saiba mais sobre o uso do SED para editar os arquivos no local.

Computação feliz!