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.
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 identidade01 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.
$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.