Estes 10 exemplos Sed farão de você um usuário avançado do Linux

Editar arquivos de texto e saída de terminal é uma tarefa diária para quem administra máquinas Linux. Utilitários de linha de comando como sed permitem que um usuário modifique e altere o conteúdo de um arquivo de texto diretamente da janela do terminal.

Neste artigo, discutiremos o comando sed em detalhes, junto com alguns exemplos essenciais que demonstram o poder do utilitário sed no Linux.

Qual é o Comando sed?

O comando sed, que é um acrônimo para Stream Editor , é uma ferramenta de linha de comando que permite aos usuários do Linux realizar operações baseadas em texto em arquivos e saídas de terminal. Usando sed, os usuários podem localizar e substituir palavras específicas em um texto, exibir uma determinada seção da saída e editar arquivos de texto sem abri-los.

As três operações básicas suportadas pelo comando sed são:

  1. Inserção
  2. Eliminação
  3. Substituição (encontrar e substituir)

Os usuários avançados também podem implementar expressões regulares com o comando sed para editar fluxos de texto com mais eficiência.

A sintaxe básica do comando é:

 sed [options] [pattern] [filepath]

… onde options são as várias funcionalidades do comando, pattern é a expressão regular ou o script que você deseja corresponder e filepath é o caminho para o arquivo de texto que contém o texto.

10 exemplos de comando sed do Linux

Se você planeja se tornar um usuário regular do Linux, saber como editar arquivos, pesquisar e substituir palavras específicas e filtrar a saída do terminal pode ser útil para você. Esta seção cobre alguns exemplos do comando sed que definitivamente o transformará em um usuário avançado do Linux.

Estaremos usando o seguinte arquivo de texto para demonstração no post.

 This is a demo text file.
It is an amazing file that will help us all.
The sed command is also great for stream editing.
Want to learn how to use the command?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

1. Veja um intervalo de linhas

Os comandos do Linux, como head e tail geram as primeiras ou as últimas dez linhas de um arquivo de texto. Mas e se você quiser colocar o conteúdo entre duas linhas específicas em um arquivo? Em tais situações, o comando sed pode ser útil.

Para gerar o conteúdo entre as linhas 3 e 5 do arquivo textfile.txt :

 sed -n '3,5p' textfile.txt

O sinalizador -n impede que o sed exiba o espaço do padrão no final de cada ciclo. Você também pode usar as opções –quiet e –silent em vez de -n . O argumento p significa impressão e é usado para exibir as linhas correspondentes ao usuário.

Executar o comando mencionado no arquivo de exemplo produz a seguinte saída.

 The sed command is also great for stream editing.
Want to learn how to use the command?
This is another line in the file.

Para gerar todo o conteúdo do arquivo, exceto para o intervalo especificado, use o sinalizador d em vez de p no comando:

 sed '3,5d' textfile.txt

O sinalizador d exclui as strings correspondentes da saída e exibe o restante do conteúdo.

 This is a demo text file.
It is an amazing file that will help us all.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

2. Exibir linhas não consecutivas

Para imprimir linhas não consecutivas entre vários intervalos no arquivo:

 sed -n -e '1,2p' -e '5,6p' textfile.txt

Resultado:

 This is a demo text file.
It is an amazing file that will help us all.
This is another line in the file.
This is the third general line in the file.

O sinalizador -e ajuda a executar várias ações usando um único comando.

3. Insira o espaço entre as linhas

Se por algum motivo você quiser inserir linhas vazias entre cada linha em um arquivo de texto, use o argumento G com o comando sed padrão.

 sed G textfile.txt

Para inserir várias linhas vazias na saída, passe vários argumentos G separados pelo caractere ponto-e-vírgula ( ; ).

 sed 'G;G' textfile.txt

4. Substitua uma palavra em um arquivo de texto

Se você deseja substituir cada ocorrência de uma palavra específica com alguma outra palavra, use as s e argumentos g com o comando. A sintaxe básica para substituir palavras usando o comando sed é:

 sed s/originalword/replaceword/g filename

Usando a sintaxe mencionada acima, você pode substituir a palavra amazing por super no arquivo textfile.txt :

 sed s/amazing/super/g textfile.txt

O argumento s denota substituição e o comando g é usado para substituir o conteúdo correspondente pelo conteúdo de substituição especificado.

Para substituir a segunda ocorrência da palavra por sed, passe um número para o argumento g . Nesse caso:

 sed s/amazing/super/g2 textfile.txt

Se você deseja ignorar maiúsculas e minúsculas ao substituir palavras, use gi em vez de g , onde i significa ignorar maiúsculas e minúsculas.

 sed s/Amazing/super/gi textfile.txt

Relacionado: Usando o Vi? Veja como abrir um arquivo, salvar e sair

5. Substituir palavras dentro de um intervalo

Você também pode substituir palavras dentro de um intervalo específico.

 sed '2,5s/amazing/super/g' textfile.txt

6. Realize substituições múltiplas de uma vez

Se você deseja realizar duas ou mais substituições de uma vez, apenas separe os comandos com o caractere ponto-e-vírgula ( ; ).

 sed 's/amazing/super/g;s/command/utility/gi' textfile.txt

O sistema exibirá a seguinte saída.

 This is a demo text file.
It is an super file that will help us all.
The sed utility is also great for stream editing.
Want to learn how to use the utility?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

7. Substitua palavras somente se uma correspondência for encontrada

Você também pode usar o comando sed para substituir uma palavra apenas se uma determinada correspondência for encontrada na linha. Por exemplo, para substituir a palavra a por um se a palavra laranja estiver presente na linha:

 sed -e '/orange/ s/a/an/g' textfile.txt

Emitir o comando mencionado acima resultará em:

 This is a demo text file.
It is an super file that will help us all.
The sed utility is also great for stream editing.
Want to learn how to use the utility?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is an orange.

Observe que a palavra a na linha Esta é uma maçã não foi substituída porque o sistema não encontrou a palavra laranja nela.

8. Substituir palavras usando expressões regulares

Para aqueles que sabem como usar expressões regulares, realizar operações em strings usando o comando sed se torna muito mais fácil. Você pode implementar expressões regulares para aprimorar o poder do comando.

Para substituir todas as ocorrências da palavra incrível ou incrível por super :

 sed -e 's/[Aa]mazing/super/g' textfile.txt

Da mesma forma, você também pode usar expressões regulares avançadas para executar operações específicas usando o comando sed.

9. Pipe sed com outros comandos

Você também pode encadear o sed com outros comandos do Linux. Por exemplo, você pode canalizar o comando lspci com sed para adicionar espaços vazios entre as linhas na saída.

 lspci | sed G

Para substituir palavras específicas na saída do comando ip route show :

 ip route show | sed s/src/source/g

O comando mencionado substitui a palavra source src pela palavra original.

Relacionado: Como usar o comando Find para pesquisar arquivos no Linux

10. Edite e faça backup do arquivo original

Quando você está trabalhando com arquivos do sistema, é importante fazer backup do arquivo original enquanto faz as alterações. Isso irá ajudá-lo a reverter as alterações no caso de algo quebrar.

Para fazer backup do arquivo original usando sed, use o sinalizador -i no comando.

 sed -i'.backup' 's/amazing/super/g' textfile.txt

Um novo arquivo será criado com o nome textfile.txt.backup . Você pode verificar se os dois arquivos são diferentes usando o comando diff .

 diff textfile.txt textfile.txt.backup

Editando Strings no Linux com sed

Às vezes, enquanto você está trabalhando com arquivos de texto no terminal, formatar e editar a saída para melhor legibilidade se torna uma obrigação. Sed e awk são utilitários de linha de comando no Linux que permitem ao usuário trabalhar de forma eficiente com arquivos de texto, dividindo os dados em linhas separadas.

Muitos usuários têm dificuldade em memorizar os argumentos e sinalizadores do comando sed, pois muitos deles estão disponíveis para uso. Saber como obter manuais de linha de comando para qualquer comando do Linux o ajudará a sair facilmente dessas situações.