Sed no local editar arquivo

Sed no local editar arquivo

“No ecossistema Unix/Linux, o comando sed é uma ferramenta dedicada para editar fluxos, daí o nome (editor de fluxo). Ele recebe entradas de texto como "fluxos" e executa as operações especificadas no fluxo.”

Neste guia, exploraremos a execução de edição de arquivos no local com sed.

Pré -requisitos

Para executar as etapas demonstradas neste guia, você precisará dos seguintes componentes:

    • Qualquer distro moderna do Unix/Linux. Para este guia, estarei usando o Ubuntu 20.04 LTS em execução no VirtualBox.
    • Um emulador de terminal adequado, de preferência com destaque de sintaxe. Confira alguns dos melhores emuladores de terminal no Linux.

Editando Stream usando sed

Primeiro, vamos dar uma breve olhada em como sed opera. A estrutura de comando do SED é a seguinte:

$ sed


O comando a seguir mostra um simples fluxo de trabalho do SED:

$ echo "The Quick Brown Fox" | sed -e 's/rápido/rápido/'



Aqui,

    • O comando ECHO imprime a string Stdout. Saiba mais sobre stdin, stdout e stderr.
    • Estamos canalizando a saída para o sed Aqui, Stdout é o fluxo sed que executará a tarefa especificada.
    • O sed O comando, conforme especificado, procurará qualquer instância da palavra rápido e substitua -o por rápido. O fluxo resultante será impresso no console.

E se quiséssemos modificar os textos de um arquivo de texto? O comando sed também pode funcionar usando arquivos de texto como o fluxo. Para demonstração, peguei o seguinte arquivo de texto:

$ CAT Demo.TXT



O seguinte comando sed substituirá todas as instâncias de o com da:

$ sed -e 's/the/da/g' demonstração.TXT



Verifique o conteúdo de demonstração.TXT Para mudanças:

$ CAT Demo.TXT



A partir do último exemplo, podemos ver que o SED apenas imprimiu o fluxo resultante no console. O arquivo de origem (demonstração.TXT) não foi tocado.

Editando arquivos no local usando sed

Conforme demonstrado no exemplo anterior, a ação padrão do SED é imprimir o conteúdo alterado na tela. É um ótimo recurso que pode evitar alterações acidentais nos arquivos. No entanto, se quiséssemos salvar as alterações no arquivo, precisávamos fornecer algumas opções adicionais.

Uma técnica simples e comum seria substituir o conteúdo do arquivo pelo sed saída. Dê uma olhada no seguinte comando:

$ CAT Demo.txt | sed 's/the/da/g' | Demoção Tee.TXT



Aqui, estamos substituindo o conteúdo de demonstração.TXT com a saída do sed comando.

Embora o comando funcione como pretendido, é necessário digitar códigos adicionais. Envolvamos os comandos de gato e tee junto com o comando sed. Bash também está envolvido no redirecionamento das saídas. Assim, o comando é mais intensivo em recursos do que precisa ser.

Para resolver isso, podemos usar o recurso de edição no local do SED. Neste modo, sed mudará o conteúdo do arquivo diretamente. Para invocar o modo de edição no local, temos que usar o -eu ou -no lugar bandeira. A seguir sed comando implementa:

$ sed -no local -e 's/o/da/g' demonstração.TXT



Verificar demonstração.TXT Para mudanças:

$ CAT Demo.TXT



Como você pode ver, o conteúdo do arquivo é alterado sem adicionar componentes adicionais.

Pensamentos finais

Neste guia, demonstramos com sucesso a execução de edições no local em arquivos de texto usando sed. Enquanto o próprio sed é um programa simples, a principal fonte de poder está dentro de sua capacidade de incorporar expressões regulares. Regex permite descrever padrões muito complexos que sed atua. Confira Regex no SED para saber mais aprofundado.

Como alternativa, você pode usar scripts bash para filtrar e modificar o conteúdo de um arquivo. De fato, você pode incorporar o SED em seus scripts para ajustar o conteúdo do texto ajustado. Confira este guia sobre como começar com scripts de basquete.

Computação feliz!