Comando sed para excluir uma linha

Comando sed para excluir uma linha
SED é uma ferramenta Linux integrada para manipulação de texto. O termo sed significa Editor de fluxo. Apesar do nome, sed não é um editor de texto por si só. Em vez disso, é necessário texto como entrada, executa várias modificações de texto de acordo com as instruções e imprime a saída.

Este guia demonstrará como usar o SED para excluir uma linha de um texto.

Sed no linux

O nome completo do SED nos dá uma dica no seu método de trabalho. SED toma o texto de entrada como um fluxo. O texto pode vir de qualquer lugar - um arquivo de texto ou saída padrão (stdout). Depois de receber a entrada, o Sed opera nele linha por linha.

Para demonstração, aqui está um arquivo de texto simples que eu gerei.

$ gat manequim.TXT
1. o
2. rápido
3. marrom
4. raposa
5. saltos
6. sobre
7. o
8. preguiçoso
9. cachorro

Excluindo linha usando sed

Para excluir uma linha, usaremos o comando sed “d”. Observe que você deve declarar qual linha excluir. Caso contrário, sed excluirá todas as linhas.

Exclua uma única linha

O seguinte comando sed excluirá a primeira linha do texto.

sed '1d' manequim.TXT

Basicamente, para excluir uma linha, você precisa do número de linha da linha de destino. Vamos remover a linha 5.

sed '5d' manequim.TXT

Para excluir a última linha do arquivo de texto, em vez de calcular manualmente o número da linha, use "$" em vez disso.

sed '$ d' manequim.TXT

Exclua uma variedade de linha

Sed pode excluir uma variedade de linhas. Aqui, o valor mínimo da linha é 1 e o valor máximo da linha é 5. Para declarar alcance, estamos usando vírgula (,).

sed '1,5d' manequim.TXT

Exclua várias linhas

E se as linhas que você deseja remover não estiverem em um intervalo fixo? Dê uma olhada no seguinte comando sed. Observe que estamos usando um semicolon (;) como o delimitador. Essencialmente, cada opção delimitada é um comando sed separado.

sed '1d; 2d; 3d; $ d' manequim.TXT

Exclua todas as linhas, exceto o intervalo especificado

No próximo exemplo, o SED só manterá as linhas descritas pelo intervalo. Aqui, "!”É o operador de negação, dizendo ao SED para manter as linhas específicas.

sed '2,4!D 'manequim.TXT

Exclua linhas vazias

Se houver várias linhas vazias ou em branco no texto, o seguinte comando sed removerá todos eles.

sed '/^$/d' manequim.TXT

Excluir linhas baseadas no padrão

O SED pode procurar um padrão específico e executar as ações especificadas na linha. Podemos usar esse recurso para excluir linhas específicas que correspondam a um padrão.

Vamos dar uma olhada na seguinte demonstração. Sed removerá qualquer linha que contenha a string "o".

sed '/the/d' manequim.TXT

Também podemos descrever várias strings para procurar. Cada string é delimitada usando o símbolo “\ |”.

sed '/marrom \ | o/d' manequim.TXT

Excluir linhas começando com um personagem específico

Para denotar o início de uma linha, usaremos o símbolo careteiro (^).

O seguinte comando sed removerá todas as linhas que começam com um dígito. Aqui, o grupo de personagens “[: dígito:]” descreve todos os dígitos (0-9).

sed '/^[[: dígito:]/d' manequim.TXT

Também podemos descrever vários caracteres para uma correspondência válida. O exemplo a seguir corresponderá a todas as linhas que começam com "T" e "B".

sed '/^[tb]/d' manequim.TXT

No próximo exemplo, confira como remover todas as linhas que começam com um caractere em maiúsculas. Aqui, estamos usando o grupo de caracteres maiúsculos “[: Upper:]”.

sed '/^[[: superior:]]/d' manequim.TXT

Se as linhas de destino tiverem caracteres minúsculos no início, use o grupo de caracteres minúsculos “[: Lower:]”.

sed '/^[[: inferior:]]/d' manequim.TXT

Excluir linhas que terminam com caráter específico

Para denotar o fim de uma linha, podemos usar o símbolo "$". Ele descreve a partida com a última ocorrência do padrão.

No próximo exemplo, o sed excluirá as linhas que terminam com "e".

sed '/e $/d' manequim.TXT

Vamos tentar com uma pesquisa de múltiplos caracteres.

sed '/[en] $/d' manequim.TXT

Excluindo linhas que correspondem ao padrão e à próxima linha

Já demonstramos como excluir uma linha se um padrão corresponder. Podemos estender e excluir ainda mais a linha subsequente também.

Confira o seguinte comando sed.

sed '/the/n; d;' manequim.TXT

Sed corresponderá à linha que contém "o" e excluirá a linha subsequente também.

Excluindo a linha da correspondência do padrão até o fim

Podemos estender ainda mais o exemplo anterior para solicitar sed para excluir todas as linhas, começando pela primeira partida do padrão.

sed '/fox/, $ d' manequim.TXT

Aqui, sed excluirá a linha que corresponde ao padrão "o" primeiro e todas as linhas depois.

Pensamento final

Sed é uma ferramenta simples. No entanto, pode fazer maravilhas, graças ao apoio à expressão regular. O SED também se integra perfeitamente em vários scripts.

Este foi apenas um guia curto demonstrando uma das funções sed - Excluindo linhas. Há toneladas de outras coisas que você pode fazer com sed. Por exemplo, confira este mega guia sobre 50 exemplos de sed. É um guia fantástico cobrindo todo o básico e muitas implementações avançadas de sed.