O comando SED no Linux

O comando SED no Linux

O comando SED é uma ótima ferramenta de edição de arquivos ou de formatação de resultados de comandos, com ele você pode pesquisar, localizar e substituir, inserir ou excluir palavras, números e etc. O uso mais comum do comando SED é a localização e substituição.

Imagina que tenha o arquivo nomes.txt e dentro dele existem vários nomes Marcus e você deseja trocar para Marcos, você teria que abrir o arquivo com seu editor preferido e ir substituindo, ou abrir via Sublime/ Notepad e usar o replace, mas com o SED você faz tudo isso com uma linha minúscula de comando e sem a necessidade de abrir o arquivo. O SED é capaz disso e muito mais!

O comando SED suporta expressão regular, o que permite realizar matchs de padrões complexos.

Instalação

O SED geralmente vem instalado nas distribuições mais recentes, porém caso não esteja pode instalar utilizando os comandos abaixo:

Valide se está instalado

sed --version

Output se tiver instalado:

Output para sed instalado

Caso o SED não tenha instalado siga os comandos abaixo

Ubuntu/ Debian

sudo apt install sed

CentOS

sudo yum install sed

Utilização

Nestes exemplos utilizaremos um arquivo txt com vários nomes.

cat nomes.txt
Lucas Matheus Marcus Sheldon Marcus Skywalker  
Matheus Sheldon Marcus Vinicius Marcus Luke  
Gustavo Marcus Vinicius Marcus Marcus Skywalker
1 - Substituir uma ocorrência: Vamos trocar o nome Marcus por Marcos
sed 's/Marcus/Marcos/' nomes.txt

Resultado:

Lucas Matheus Marcos Sheldon Marcus Skywalker
Matheus Sheldon Marcos Vinicius Marcus Luke
Gustavo Marcos Vinicius Marcus Marcus Skywalker

A sintaxe especifica “s” na operação de substituição. Os “/” são delimitadores. O “Marcus” é  a pesquisa e o “Marcos” é a string de substituição. Por padrão, o comando SED substitui a primeira ocorrência do padrão em cada linha.

2 - Substituindo todas as ocorrências: O sinalizador de substituição /g (substituição global) caracteriza que o comando SED irá substituir todas as ocorrências da string na linha.
sed 's/Marcus/Marcos/g' nomes.txt

Resultado:

Lucas Matheus Marcos Sheldon Marcos Skywalker
Matheus Sheldon Marcos Vinicius Marcos Luke
Gustavo Marcos Vinicius Marcos Marcos Skywalker
3 - Substituindo a string em uma linha específica: Você pode restringir o comando SED para substituir a string em uma linha específica. Neste exemplo filtramos a terceira linha
sed '3 s/Marcus/Marcos/' nomes.txt

Resultado:

Lucas Matheus Marcus Sheldon Marcus Skywalker
Matheus Sheldon Marcus Vinicius Marcus Luke
Gustavo Marcos Vinicius Marcus Marcus Skywalker
4 - Colocar uma String no início de cada linha
sed 's/^/REX /' nomes.txt

Resultado:

REX Lucas Matheus Marcus Sheldon Marcus Skywalker
REX Matheus Sheldon Marcus Vinicius Marcus Luke
REX Gustavo Marcus Vinicius Marcus Marcus Skywalker
5 - Inserir uma String no início do intervalo da linha 2 até a 3
sed '2,3 s/^/REX /' nomes.txt

Resultado:

Lucas Matheus Marcus Sheldon Marcus Skywalker
REX Matheus Sheldon Marcus Vinicius Marcus Luke
REX Gustavo Marcus Vinicius Marcus Marcus Skywalker
6 - Colocar uma String no final de cada linha
sed 's/$/ REX/' nomes.txt

Resultado:

Lucas Matheus Marcus Sheldon Marcus Skywalker REX
Matheus Sheldon Marcus Vinicius Marcus Luke REX
Gustavo Marcus Vinicius Marcus Marcus Skywalker REX
7 - Exibe as linhas que iniciam com a string ‘Matheus’
sed -n '/^Matheus/p' nomes.txt

Resultado:

Matheus Sheldon Marcus Vinicius Marcus Luke
8 - Apaga as linhas pela numeração delas. O 1 é o número da linha, se quiser apagar a segunda, utilize ‘2d’, a terceira ‘3d’ e por aí vai.
sed '1d' nomes.txt

Resultado:

Matheus Sheldon Marcus Vinicius Marcus Luke
Gustavo Marcus Vinicius Marcus Marcus Skywalker
9 - Insere uma quebra de linha entre as linhas
sed 'G' nomes.txt

Resultado:

Lucas Matheus Marcus Sheldon Marcus Skywalker

Matheus Sheldon Marcus Vinicius Marcus Luke

Gustavo Marcus Vinicius Marcus Marcus Skywalker

Por fim, agradecemos a leitura e esperamos que este post tenha te ajudado de alguma maneira! Caso tenha alguma dúvida, entre em contato conosco pelo Telegram , Facebook ou Instagram ! Veja mais posts no IronLinux !

Posts relacionados

Inserir data e hora no comando HISTORY

Inserir data e hora no comando HISTORY

Neste POST iremos aprender a inserir data e hora no comando HISTORY do Linux de maneira rápida e fácil!

Ler post completo