Como inserir uma linha após a correspondência usando `sed`?

How Insert Line After Match Using Sed



Um dos comandos úteis e poderosos do Linux é o comando sed. Este comando é usado para executar diferentes tipos de tarefas no Linux, como inserir, atualizar e excluir um determinado texto ou linha com base na correspondência. Você pode inserir um texto em uma string ou arquivo de maneiras diferentes usando o comando sed.

Como inserir uma linha após encontrar uma correspondência em uma string ou linha é mostrado neste tutorial.







Insira uma linha na string

Uma nova linha pode ser inserida após qualquer valor de string usando o comando sed se o padrão definido no comando corresponder a qualquer parte do valor de string.



O exemplo a seguir mostra como uma nova linha pode ser adicionada após um valor de string se uma string específica existir em qualquer lugar no valor da string.



Exemplo-1: insira uma linha em uma string depois de encontrar uma correspondência

O comando a seguir irá pesquisar inng na string, I like programming, e uma linha de texto, Do you like programming? será inserido após a string se a string de pesquisa existir.





Aqui, o caractere & é usado para inserir a linha após a string.

$jogou fora 'Eu gosto de programação.' | sed 's / inng / & Você gosta de programação? /'

A saída a seguir mostra que inng não existe na string e nenhuma linha é inserida após a string.




O seguinte comando irá pesquisar. na string, gosto de programar e existe na string.

$jogou fora 'Eu gosto de programação.' | sed 's / ing ./& Você gosta de programação? /'

A saída a seguir mostra que a nova linha é adicionada após a string.

Insira uma linha em um arquivo

Existem duas maneiras de inserir uma linha depois que uma correspondência for encontrada em um arquivo mencionado abaixo. Quando o comando sed é usado sem a opção -i, o conteúdo do arquivo permanecerá inalterado e a saída mostrará o conteúdo do arquivo com a nova linha inserida. Você deve usar a opção -i com o comando sed para inserir a nova linha permanentemente no arquivo se o padrão correspondente existir no arquivo.

A. Usando um no comando sed

O a pode ser usado no padrão de pesquisa do sed para anexar uma ou mais linhas em um arquivo após a linha onde o padrão de pesquisa corresponde ou após um número de linha específico.

B. Usando i no comando sed

O i pode ser usado no padrão de pesquisa do comando sed para inserir uma ou mais linhas em um arquivo antes da linha onde o padrão de pesquisa corresponde.

Insira linha (s) em um arquivo com base no padrão:

Crie um arquivo de texto delimitado por tabulação chamado products.txt com o seguinte conteúdo para mostrar os usos do sinalizador acima no comando sed.

products.txt

Nome de identidade

01 chantilly

02 Cacau em Pó

03 Açucar

04 Ovo

05 Farinha

Exemplo-2: insira uma linha após um número de linha específico usando o a

Os comandos a seguir mostram como uma nova linha pode ser incluída, após um determinado número de linha do arquivo products.txt, com base no padrão usado no comando sed.

Aqui, o primeiro comando mostrará o conteúdo existente do arquivo. O comando sed anexará o texto, b01 Fermento em pó, após as duas primeiras linhas do arquivo. O último comando é usado para verificar se o conteúdo do arquivo foi alterado ou não.

$gatoproducts.txt

$sed '2 a b01 tPó para cozimento'products.txt

$gatoproducts.txt

A seguinte saída aparecerá após a execução do comando acima.

Exemplo-3: Insira uma linha após a última linha usando o a

O comando a seguir mostra como acrescentar uma nova linha após a última linha do arquivo. O primeiro e o último comando mostram o conteúdo existente do arquivo antes e depois de executar o comando sed. O símbolo $ é usado no padrão do comando sed para mencionar a última linha do arquivo.

$gatoproducts.txt

$sed '$ a b01 tPó para cozimento'products.txt

$gatoproducts.txt

A seguinte saída aparecerá após a execução do comando acima.

Exemplo-4: Insira uma linha em qualquer lugar do arquivo depois de combinar um padrão usando o a

O seguinte comando sed mostra como uma nova linha pode ser adicionada em qualquer lugar no arquivo com base no padrão correspondente. O padrão usado no comando sed pesquisará qualquer linha começando com s01 e adicionará a nova string depois dela. A quarta linha do arquivo começa com s01, e a nova linha será inserida após essa linha.

$gatoproducts.txt

$sed '/^s01.*/a b01 tPó para cozimento'products.txt

$gatoproducts.txt

A seguinte saída aparecerá após a execução do comando.


O seguinte comando sed irá pesquisar qualquer linha que termine com Powder e inserir a nova linha depois dela. A terceira linha do arquivo termina com Pó. Portanto, a nova linha será inserida após essa linha.

$gatoproducts.txt

$sed '/ Pó $ / a b01 t Pó de Assar'products.txt

$gatoproducts.txt

A seguinte saída aparecerá após a execução dos comandos acima.

Exemplo 5: insira várias linhas após o padrão de correspondência usando um

O comando sed a seguir mostra como adicionar várias linhas dentro do conteúdo de um arquivo com base no padrão de correspondência.

Aqui, duas linhas serão adicionadas após a terceira linha, de acordo com o padrão.

$gatoproducts.txt

$sed '/ ^ [a-c] / a b01 tPó para cozimento nb02 tComo refrigerante'products.txt

$gatoproducts.txt

A seguinte saída aparecerá após a execução dos comandos acima.

Exemplo-6: Insira uma linha após combinar um padrão usando o I

$gatoproducts.txt

$sed '/ creme / i b01 t Pó para Assar'products.txt

$gatoproducts.txt

A seguinte saída aparecerá após a execução dos comandos acima.

Exemplo-7: Insira uma linha permanentemente após o padrão de correspondência usando a opção -i

O seguinte comando sed mostra como alterar o conteúdo do arquivo permanentemente. A opção i é usada com o comando sed para inserir uma nova linha no arquivo com base no padrão.

$gatoproducts.txt

$sed -eu '/ e $ / a g01 tGhee'products.txt

$gatoproducts.txt

A seguinte saída aparecerá após a execução dos comandos acima.

Conclusão:

As maneiras de inserir duas ou mais linhas em um arquivo usando o comando sed com padrão foram mostradas neste tutorial para ajudar o leitor a aplicar este comando para inserir linhas temporariamente ou permanentemente com base no padrão.