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:
Verifique o conteúdo do arquivo usando o seguinte comando:
$ Teste CAT.TXTSubstituindo o texto
Para substituir os textos, a estrutura de comando geral é a seguinte:
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.TXTExecutando 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:
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.TXTSe 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 -fVamos colocar em ação. Nós compilamos todos os comandos sed que queremos executar nos comandos de arquivo.TXT.
comandos de $ CAT.TXTObserve 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.TXTMú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!