Como inserir uma linha após a partida usando 'sed'?

Como inserir uma linha após a partida usando '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 texto ou linha específica com base na correspondência. Você pode inserir um texto em uma string ou um arquivo de maneiras diferentes usando o comando "sed".

Como inserir uma linha depois de encontrar uma correspondência em uma string ou uma linha é mostrada 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 da string.

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

Exemplo 1: Insira uma linha em uma string depois de encontrar uma partida

O comando a seguir pesquisará "Inng" na string, "eu gosto de programação" e uma linha de texto, "Você gosta de programar?”Será inserido após a string se a sequência de busca existir.

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

$ eco "eu gosto de programar."| sed 's/inng/& você gosta de programar?/'

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


O seguinte comando pesquisará “ing.”Na string,“ eu gosto de programar ”e existe na string.

$ eco "eu gosto de programar."| sed 's/ing./& Você gosta de programar?/'

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

Insira uma linha em um arquivo

Há duas maneiras de inserir uma linha após a partida ser 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ê precisa usar a opção "-i" com o comando "sed" para inserir a nova linha permanentemente no arquivo se o padrão de correspondência existir no arquivo.

A. Usando "A" 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 em que o padrão de pesquisa corresponde ou após um número específico de linha.

B. Usando "eu" no comando "sed"

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

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

Crie um arquivo de texto delimitado por Tab chamado produtos.TXT com o conteúdo a seguir para mostrar os usos da bandeira acima no comando "sed".

produtos.TXT

Nome de identificação
01 Creme de chicote
02 Cacau em pó
03 Açúcar
04 ovo
05 Farinha

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

Os seguintes comandos mostram como uma nova linha pode ser adicionada, depois de um número específico de linha dos produtos.Arquivo 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 Baking Power", após as duas primeiras linhas do arquivo. O último comando é usado para verificar se o conteúdo do arquivo é alterado ou não.

$ CAT Products.TXT
$ sed '2 a B01 \ TBaking Powder' Products.TXT
$ CAT Products.TXT

A saída a seguir 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 a maneira de anexar uma nova linha após a última linha do arquivo. O primeiro e o último comando mostra 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.

$ CAT Products.TXT
$ sed '$ A B01 \ TBaking Powder' Produtos.TXT
$ CAT Products.TXT

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

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

O seguinte comando "sed" mostra como uma nova linha pode ser adicionada em qualquer lugar do arquivo com base no padrão de correspondência. O padrão usado no comando "sed" pesquisará qualquer linha que começa com "S01" e adicione a nova string depois que ele. A quarta linha do arquivo começa com "S01", e a nova linha será inserida após essa linha.

$ CAT Products.TXT
$ sed '/^s01.*/A B01 \ TBAKING POWD 'Products.TXT
$ CAT Products.TXT

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


O seguinte comando "sed" pesquisará qualquer linha que termine com "pó" e insira a nova linha. A terceira linha do arquivo termina com "pó". Então, a nova linha será inserida após essa linha.

$ CAT Products.TXT
$ sed '/pó $/A B01 \ TBaking' Products '.TXT
$ CAT Products.TXT

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

Exemplo 5: Insira várias linhas após o padrão de correspondência usando "A"

O seguinte comando "sed" mostra a maneira de 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.

$ CAT Products.TXT
$ sed '/^[a-c]/a b01 \ tbaking em pó \ nb02 \ tbaking soda' produtos '.TXT
$ CAT Products.TXT

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

Exemplo 6: Insira uma linha depois de corresponder a um padrão usando o "eu"

$ CAT Products.TXT
$ sed '/creme/i b01 \ tbaking' produtos '.TXT
$ CAT Products.TXT

A saída a seguir 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.

$ CAT Products.TXT
$ sed -i '/e $/A G01 \ TGHEE' produtos.TXT
$ CAT Products.TXT

A saída a seguir 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 de linha temporária ou permanentemente com base no padrão.