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.