Editor de fluxo - fluxo de trabalho

Neste capítulo, exploraremos como o SED funciona exatamente. Para se tornar um usuário especialista em SED, é necessário conhecer seus componentes internos. O SED segue um fluxo de trabalho simples: Ler, Executar e Exibir. O diagrama a seguir descreve o fluxo de trabalho.

  • Read: SED lê uma linha do fluxo de entrada (arquivo, canal ou stdin) e a armazena em seu buffer interno chamado pattern buffer.

  • Execute: Todos os comandos SED são aplicados sequencialmente no buffer de padrão. Por padrão, os comandos SED são aplicados em todas as linhas (globalmente), a menos que o endereçamento de linha seja especificado.

  • Display: Envie o conteúdo (modificado) para o fluxo de saída. Depois de enviar os dados, o buffer do padrão ficará vazio.

  • O processo acima se repete até que o arquivo se esgote.

Pontos a serem observados

  • O buffer de padrão é uma área de armazenamento volátil privada, na memória, usada pelo SED.

  • Por padrão, todos os comandos SED são aplicados no buffer de padrão, portanto, o arquivo de entrada permanece inalterado. GNU SED fornece uma maneira de modificar o arquivo de entrada no local. Exploraremos isso em seções posteriores.

  • Existe outra área de memória chamada hold bufferque também é privada, na memória, área de armazenamento volátil. Os dados podem ser armazenados em um buffer de retenção para recuperação posterior. No final de cada ciclo, o SED remove o conteúdo do buffer de padrão, mas o conteúdo do buffer de retenção permanece persistente entre os ciclos do SED. No entanto, os comandos SED não podem ser executados diretamente no buffer de espera, portanto, o SED permite a movimentação de dados entre o buffer de espera e o buffer de padrão.

  • Inicialmente, os buffers padrão e de espera estão vazios.

  • Se nenhum arquivo de entrada for fornecido, o SED aceitará a entrada do fluxo de entrada padrão (stdin).

  • Se o intervalo de endereços não for fornecido por padrão, o SED opera em cada linha.

Exemplos

Vamos criar um arquivo de texto quote.txt para conter uma citação do famoso autor Paulo Coelho.

[jerry]$ vi quote.txt 
There is only one thing that makes a dream impossible to achieve: the fear of failure. 
 - Paulo Coelho, The Alchemist

Para entender o fluxo de trabalho do SED, vamos exibir o conteúdo do arquivo quote.txt usando o SED. Este exemplo simula ocat comando.

[jerry]$ sed '' quote.txt

Quando o código acima for executado, ele produzirá o seguinte resultado.

There is only one thing that makes a dream impossible to achieve: the fear of failure.

No exemplo acima, quote.txt é o nome do arquivo de entrada e antes disso há um par de aspas simples que implica o comando SED. Vamos desmistificar essa operação.

Primeiro, o SED lê uma linha do arquivo de entrada quote.txt e a armazena em seu buffer de padrão. Em seguida, ele aplica comandos SED no buffer de padrão. Em nosso caso, nenhum comando SED está lá, portanto, nenhuma operação é executada no buffer de padrão. Finalmente, ele exclui e imprime o conteúdo do buffer de padrão na saída padrão. Não é simples?

No exemplo a seguir, SED aceita entrada do fluxo de entrada padrão.

[jerry]$ sed '' 
       
      

Quando o código acima for executado, ele produzirá o seguinte resultado.

There is only one thing that makes a dream impossible to achieve: the fear of failure. 
There is only one thing that makes a dream impossible to achieve: the fear of failure.

Aqui, a primeira linha é inserida através do teclado e a segunda é a saída gerada pelo SED. Para sair da sessão SED, pressione ctrl-D (^ D).