DevOps

Guia Completo do Sed Linux

O editor de fluxo “sed”, abreviação de “stream editor”, é uma ferramenta poderosa e versátil amplamente utilizada em sistemas Linux para manipulação de texto em fluxo. Ele permite editar e transformar texto de forma automatizada, facilitando tarefas como substituição de texto, exclusão de linhas, inserção de conteúdo e muito mais. O sed opera lendo linhas de entrada uma por vez, aplicando padrões especificados pelo usuário e executando ações correspondentes.

O uso básico do sed envolve a especificação de um conjunto de instruções, chamadas de “expressões sed”, que descrevem as transformações a serem aplicadas ao texto de entrada. Cada expressão sed é composta por um padrão a ser localizado no texto de entrada e uma ação a ser executada quando o padrão é encontrado.

Uma das operações mais comuns realizadas com o sed é a substituição de texto. Isso pode ser feito usando a sintaxe s/padrão/substituição/, onde “padrão” é o texto a ser substituído e “substituição” é o texto pelo qual ele deve ser substituído. Por exemplo, para substituir todas as ocorrências da palavra “velho” por “novo” em um arquivo chamado “arquivo.txt”, podemos usar o comando:

arduino
sed 's/velho/novo/g' arquivo.txt

O flag g no final da expressão s/velho/novo/g indica que a substituição deve ser global, ou seja, todas as ocorrências do padrão devem ser substituídas, não apenas a primeira.

Outra operação comum é a exclusão de linhas que correspondem a um determinado padrão. Isso pode ser feito usando a sintaxe /padrão/d, onde “padrão” é o texto que deve ser procurado e excluído. Por exemplo, para excluir todas as linhas que contêm a palavra “exemplo” de um arquivo chamado “arquivo.txt”, podemos usar o comando:

arduino
sed '/exemplo/d' arquivo.txt

Também é possível inserir conteúdo em locais específicos do texto usando o comando i ou a. O comando i insere o texto antes da linha correspondente ao padrão especificado, enquanto o comando a insere o texto após essa linha. Por exemplo, para inserir a linha “Nova linha inserida” antes de cada linha que contenha a palavra “inserir” em um arquivo chamado “arquivo.txt”, podemos usar o comando:

arduino
sed '/inserir/i Nova linha inserida' arquivo.txt

Da mesma forma, para inserir a linha “Linha adicional” após cada linha que contenha a palavra “adicionar” em um arquivo chamado “arquivo.txt”, podemos usar o comando:

arduino
sed '/adicionar/a Linha adicional' arquivo.txt

Além das operações básicas mencionadas acima, o sed oferece muitas outras funcionalidades poderosas, como salvar as alterações diretamente no arquivo original (-i), usar expressões regulares estendidas (-E), realizar operações de substituição somente em linhas específicas, entre outras.

É importante mencionar que o sed é uma ferramenta de linha de comando, o que significa que pode ser facilmente integrada a scripts e pipelines de processamento de texto mais complexos. Sua eficiência e versatilidade o tornam uma escolha popular entre os administradores de sistemas e desenvolvedores para automatizar tarefas de manipulação de texto em sistemas Linux.

“Mais Informações”

Além das operações básicas mencionadas anteriormente, o sed oferece uma variedade de recursos avançados que ampliam ainda mais sua utilidade e flexibilidade. Aqui estão alguns desses recursos:

Ranges de Linhas:

O sed permite especificar ranges de linhas onde as operações devem ser aplicadas. Por exemplo, para substituir um padrão apenas entre as linhas 10 e 20 de um arquivo, você pode usar:

bash
sed '10,20s/padrão/substituição/g' arquivo.txt

Expressões Regulares Estendidas:

Com a opção -E, o sed suporta expressões regulares estendidas, que oferecem uma sintaxe mais poderosa para especificar padrões de texto. Por exemplo, para substituir ocorrências de uma palavra que estejam no início de uma linha, você pode usar:

bash
sed -E 's/^\b(palavra)\b/nova_palavra/g' arquivo.txt

Referência de Grupos de Captura:

Você pode usar grupos de captura em expressões regulares e fazer referência a eles na substituição. Por exemplo, para trocar a ordem do primeiro e do último nome em uma lista separada por vírgulas, você pode usar:

bash
sed -E 's/([A-Za-z]+), ([A-Za-z]+)/\2, \1/g' arquivo.txt

Comando y para Tradução de Caracteres:

O comando y permite traduzir caracteres de uma sequência para outra. Por exemplo, para converter todas as letras minúsculas em maiúsculas, você pode usar:

bash
sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' arquivo.txt

Modificadores de Comando:

Os comandos sed podem ser modificados com letras que alteram seu comportamento. Por exemplo, o modificador p pode ser usado para imprimir apenas as linhas que foram modificadas:

bash
sed -n 's/padrão/substituição/pg' arquivo.txt

Escrita de Saída em Múltiplos Arquivos:

Além de operar diretamente no texto de entrada, o sed pode redirecionar a saída para múltiplos arquivos. Por exemplo, para salvar as linhas que contêm a palavra “importante” em um arquivo chamado “destaque.txt” e as linhas que contêm a palavra “comum” em um arquivo chamado “normal.txt”, você pode usar:

bash
sed -n '/importante/p;/comum/w normal.txt' arquivo.txt > destaque.txt

Esses são apenas alguns exemplos das muitas funcionalidades oferecidas pelo sed. Sua combinação de expressões regulares poderosas, operadores flexíveis e capacidade de integração com pipelines de shell o tornam uma ferramenta indispensável para tarefas de processamento de texto em sistemas Linux.

Botão Voltar ao Topo