Introdução
O comando sed
é uma ferramenta indispensável para qualquer profissional que trabalhe com Linux. Seja para realizar substituições simples, editar arquivos em massa ou automatizar tarefas complexas, o sed
se destaca pela sua versatilidade e eficiência. Este guia foi cuidadosamente elaborado para profissionais de todos os níveis, desde iniciantes até especialistas, oferecendo uma jornada completa pelo universo dessa poderosa ferramenta.
Neste tutorial, você encontrará:
- Conceitos básicos: Como começar a usar o
sed
para manipular texto diretamente no terminal.
- Exercícios práticos: Desde substituições simples até transformações avançadas em arquivos grandes.
- Casos de uso reais: Exemplos de automação, formatação de dados e integração com outras ferramentas como
grep
, awk
e xargs
.
- Tabela de referência rápida: Uma seção para consulta instantânea de comandos e padrões.
Seja você um administrador de sistemas, desenvolvedor ou entusiasta de tecnologia, este guia é a sua porta de entrada para dominar o sed
. Vamos começar!
Exercícios de uso do comando sed
Texto proposto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| cat texto_sed.txt
Linha 1: Este é um arquivo para práticas com o sed.
Linha 2: Ele contém vários exemplos de texto.
Linha 3: Algumas linhas possuem números: 12345.
Linha 4: Outras linhas possuem palavras repetidas: teste teste teste.
Linha 5: Existem palavras como exemplo1 e exemplo2 que seguem um padrão.
Linha 6: Aqui há palavras separadas por vírgulas, como: maçã, banana, laranja.
Linha 7: Esta linha está marcada com o texto especial.
Linha 8: Outro padrão é data no formato AAAA-MM-DD, como 2024-11-28.
Linha 9: Às vezes há múltiplos espaços entre palavras.
Linha 10: Linhas podem conter erros de digitação: exmplo, prátcas.
Linha 11: Esta linha é irrelevante e pode ser removida.
Linha 12: Números flutuam aqui: 1.23, 45.67, 890.12.
Linha 13: O texto especial aparece novamente aqui.
Linha 14: Múltiplos espaços no início da linha.
Linha 15: SED, Sed, sed – mistura de maiúsculas e minúsculas.
Linha 16: Esta linha usa delimitadores diferentes: Texto1;Texto2;Texto3.
Linha 17: Uma linha com espaços extras no final.
Linha 18: Uma linha com múltiplos espaços no meio.
Linha 19: PALAVRAS EM CAIXA ALTA PARA TESTES DE MAIÚSCULAS.
Linha 20: Uma linha vazia está logo abaixo.
Linha 21:
Linha 22: Exemplo de linha com um | delimitador de texto.
Linha 23: Outro exemplo com datas: 2023-10-15 e 2024-01-01.
Linha 24: Palavras misturadas: exmplos, corrije, seding.
Linha 25: Um exemplo de linha com números separados: 12,34,56,78.
Linha 26: Esta linha é irrelevante e deve ser excluída.
Linha 27: Final do arquivo atualizado com novas sugestões.
Linha 28: O servidor principal usa o IP 192.168.1.10.
Linha 29: Um endereço de loopback é 127.0.0.1.
Linha 30: Este é um endereço IPv6: fe80::1ff:fe23:4567:890a.
Linha 31: Contato: usuario@exemplo.com.
Linha 32: O domínio www.exemplo.com está ativo.
Linha 33: Documentação disponível em https://docs.exemplo.com/docs.
Linha 34: Site antigo: http://www.antigo.com.
Linha 35: Telefone: (11) 98765-4321.
Linha 36: Contato internacional: +1-800-555-0199.
Linha 37: Endereço: Rua Exemplo, 123 - CEP: 12345-678.
Linha 38: Código postal dos EUA: 90210.
Linha 39: [2024-11-28 12:00:00] INFO: Serviço iniciado.
Linha 40: [2024-11-28 12:30:00] ERROR: Falha na autenticação.
Linha 41: [2024-11-28 13:00:00] WARN: Espaço em disco baixo.
Linha 42: Alice, Bob, Charlie, Dave.
Linha 43: Grupo: Maria; João; Carla; Lucas.
Linha 44: Nome, Idade, Cidade
Linha 45: Alice, 30, São Paulo
Linha 46: Bob, 25, Rio de Janeiro
Linha 47: Formato americano: 11/28/2024.
Linha 48: Formato ISO 8601: 2024-11-28T14:30:00Z.
Linha 49: Formato brasileiro: 28/11/2024 14:30.
Linha 50: Valores monetários: R$1234,56; $567.89; €42.10.
Linha 51: Coordenadas: Latitude: -23.55052, Longitude: -46.63330.
Linha 52: Valores em notação científica: 1.23e+10, -4.56e-8.
Linha 53: Parágrafo 1: Este é um texto longo para práticas com o sed. Ele inclui diversas frases para análise e modificação.
Linha 54: Parágrafo 2: Outro exemplo de texto que pode ser manipulado. Teste o sed com expressões regulares.
Linha 55: username=admin
Linha 56: password=senha123
Linha 57: host=localhost
Linha 58: port=8080
Linha 59: Código: ABC123XYZ.
Linha 60: Token: 9f8d7e6c5b4a3d2c1f0.
|
Exercícios Básicos
1.1 Substituir a palavra “exemplo” por “EXEMPLO” em todo o arquivo
Comando:
1
| sed 's/\bexemplo\b/EXEMPLO/g' texto_sed.txt
|
Explicação:
s/\bexemplo\b/EXEMPLO/
: Substitui a palavra exemplo
por EXEMPLO
.
\b
: Delimita a palavra inteira (não afeta exemplo1
ou exemplo.com
).
g
: Substitui todas as ocorrências na linha.
1.2 Remover todas as linhas que contêm “irrelevante”
Comando:
1
| sed '/irrelevante/d' texto_sed.txt
|
Explicação:
/irrelevante/
: Filtra linhas que contêm a palavra irrelevante
.
d
: Deleta essas linhas.
Comando:
1
| sed '/[0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}/i Nova linha adicionada' texto_sed.txt
|
Explicação:
/[0-9]\{1,3\}\(\.[0-9]\{1,3\}\)\{3\}/
: Seleciona linhas contendo endereços IPv4.
i
: Insere a linha especificada antes das linhas selecionadas.
1.4 Remover múltiplos espaços no início ou no final das linhas
Comando:
1
| sed 's/^[[:space:]]*//;s/[[:space:]]*$//' texto_sed.txt
|
Explicação:
^[[:space:]]*
: Remove espaços no início da linha.
[[:space:]]*$
: Remove espaços no final da linha.
;
: Permite aplicar dois comandos em sequência.
1.5 Substituir o delimitador ;
por |
na Linha 43
Comando:
1
| sed '43s/;/|/g' texto_sed.txt
|
Explicação:
43
: Aplica o comando apenas à Linha 43.
s/;/|/g
: Substitui todos os ;
por |
na linha.
1.6 Substituir números inteiros por [NÚMERO]
Comando:
1
| sed 's/\b[0-9]\+\b/[NÚMERO]/g' texto_sed.txt
|
Explicação:
\b[0-9]\+\b
: Seleciona números inteiros (delimitados por bordas de palavras).
[NÚMERO]
: Substitui os números selecionados pelo texto [NÚMERO]
.
Comando:
1
| sed '19s/.*/\U&/' texto_sed.txt
|
Explicação:
19
: Aplica o comando apenas à Linha 19.
\U&
: Converte o texto capturado (.*
) para maiúsculas.
1.8 Remover linhas vazias
Comando:
1
| sed '/^$/d' texto_sed.txt
|
Explicação:
/^$/
: Seleciona linhas vazias (^
indica início e $
indica fim da linha sem conteúdo).
d
: Deleta as linhas selecionadas.
1.9 Substituir “https” por “http” nas URLs
Comando:
1
| sed 's/https:/http:/g' texto_sed.txt
|
Explicação:
s/https:/http:/
: Substitui https:
por http:
.
g
: Garante que todas as ocorrências em cada linha sejam alteradas.
1.10 Adicionar o texto “[EDITADO]” ao final de cada linha que contenha “sed”
Comando:
1
| sed '/\bsed\b/s/$/ [EDITADO]/' texto_sed.txt
|
Explicação:
/\bsed\b/
: Seleciona linhas que contêm a palavra sed
inteira.
s/$/ [EDITADO]/
: Adiciona [EDITADO]
ao final da linha ($
representa o final da linha).
Resumo dos Comandos Básicos
Exercício |
Comando Principal |
Função |
1.1 |
s/\bexemplo\b/EXEMPLO/g |
Substituir “exemplo” por “EXEMPLO”. |
1.2 |
/irrelevante/d |
Remover linhas contendo “irrelevante”. |
1.3 |
/[0-9]\{1,3\}\(\.[0-9]\{1,3\}\)... |
Adicionar linha antes de linhas com IPs. |
1.4 |
s/^[[:space:]]*//;s/[[:space:]]*$// |
Remover espaços no início ou fim das linhas. |
1.5 |
43s/;/|/g |
Substituir ; por | na Linha 43. |
1.6 |
s/\b[0-9]\+\b/[NÚMERO]/g |
Substituir números inteiros por [NÚMERO] . |
1.7 |
19s/.*/\U&/ |
Converter texto da Linha 19 para maiúsculas. |
1.8 |
/^$/d |
Remover linhas vazias. |
1.9 |
s/https:/http:/g |
Substituir https por http em URLs. |
1.10 |
/\bsed\b/s/$/ [EDITADO]/ |
Adicionar “[EDITADO]” ao final de linhas com “sed”. |
Desafios - Exercícios Básicos
1.1 Substituir palavras específicas apenas em uma linha
Pergunta:
- Como você substituiria
sed
por SED
apenas na Linha 15?
Resposta Esperada:
1
| sed '15s/sed/SED/' texto_sed.txt
|
1.2 Adicionar texto ao início de linhas específicas
Pergunta:
- Qual comando adicionaria
# Comentário
ao início das linhas contendo “texto especial”?
Resposta Esperada:
1
| sed '/texto especial/s/^/# Comentário /' texto_sed.txt
|
Pergunta:
- Como remover espaços no final das linhas, mas manter os do início?
Resposta Esperada:
1
| sed 's/[[:space:]]*$//' texto_sed.txt
|
Exercícios Intermediários
Comando:
1
| sed -n 's/.*\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\).*/\1/p' texto_sed.txt
|
Explicação:
-n
: Suprime a saída padrão.
s/.*\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\).*/\1/p
:
- Captura datas no formato
AAAA-MM-DD
usando regex.
p
: Imprime apenas as capturas.
2.2 Substituir e-mails pelo texto [EMAIL_OCULTADO]
Comando:
1
| sed 's/[a-zA-Z0-9._%+-]\+@[a-zA-Z0-9.-]\+\.[a-zA-Z]\{2,6\}/[EMAIL_OCULTADO]/g' texto_sed.txt
|
Explicação:
[a-zA-Z0-9._%+-]\+
: Captura a parte local de um e-mail.
@[a-zA-Z0-9.-]\+
: Captura o domínio.
\.[a-zA-Z]\{2,6\}
: Captura a extensão do domínio.
- Substitui e-mails encontrados por
[EMAIL_OCULTADO]
.
Comando:
1
| sed '42s/\([^,]*\), \([^,]*\), \([^,]*\), \([^,]*\)/1. \1\n2. \2\n3. \3\n4. \4/' texto_sed.txt
|
Explicação:
42
: Aplica o comando apenas à Linha 42.
\([^,]*\)
: Captura palavras separadas por vírgulas.
1. \1\n2. \2\n...
: Formata como uma lista numerada, usando \n
para quebra de linha.
2.4 Adicionar o texto [PRIVADO]
antes de todas as linhas com senhas
Comando:
1
| sed '/password/i [PRIVADO]' texto_sed.txt
|
Explicação:
/password/
: Filtra linhas que contêm a palavra password
.
i [PRIVADO]
: Insere [PRIVADO]
antes dessas linhas.
2.5 Substituir valores monetários por [VALOR]
Comando:
1
| sed 's/R\$\?[0-9]\+,\?[0-9]*/[VALOR]/g' texto_sed.txt
|
Explicação:
R\$\?[0-9]\+,\?[0-9]*
: Captura valores monetários no formato R$1234,56
ou 1234,56
.
[VALOR]
: Substitui os valores encontrados pelo texto [VALOR]
.
2.6 Alterar a ordem das palavras separadas por vírgulas (Linha 6)
Comando:
1
| sed '6s/\([^,]*\), \([^,]*\), \([^,]*\)/\3, \2, \1/' texto_sed.txt
|
Explicação:
6
: Aplica o comando apenas à Linha 6.
\([^,]*\)
: Captura palavras separadas por vírgulas.
\3, \2, \1
: Reorganiza as capturas na ordem inversa.
Comando:
1
| sed -n '39,41s/\[\(.*\)\] \(.*\): \(.*\)/{\n "timestamp": "\1",\n "level": "\2",\n "message": "\3"\n}/p' texto_sed.txt
|
Explicação:
39,41
: Aplica o comando às linhas 39 a 41.
\[\(.*\)\]
: Captura o timestamp.
\(.*\):
: Captura o nível do log (INFO
, ERROR
, etc.).
\(.*\)
: Captura a mensagem do log.
- Formata como JSON com chaves
timestamp
, level
e message
.
2.8 Substituir coordenadas por texto padronizado [LAT/LONG]
Comando:
1
| sed 's/Latitude: [+-]*[0-9.]\+, Longitude: [+-]*[0-9.]\+/[LAT\/LONG]/g' texto_sed.txt
|
Explicação:
Latitude: [+-]*[0-9.]\+, Longitude: [+-]*[0-9.]\+
:
- Captura coordenadas no formato
Latitude: -23.55052, Longitude: -46.63330
.
[LAT/LONG]
: Substitui coordenadas capturadas pelo texto [LAT/LONG]
.
Comando:
1
| sed '/[a-zA-Z0-9]\{8,\}/d' texto_sed.txt
|
Explicação:
[a-zA-Z0-9]\{8,\}
: Seleciona linhas que contêm tokens com 8 ou mais caracteres alfanuméricos.
d
: Deleta essas linhas.
Comando:
1
| sed '/[0-9]\+\.[0-9]\+/s/$/ | VALOR FINAL/' texto_sed.txt
|
Explicação:
/[0-9]\+\.[0-9]\+/
: Seleciona linhas que contêm números decimais.
s/$/ | VALOR FINAL/
: Adiciona o texto | VALOR FINAL
ao final da linha.
Resumo dos Comandos Intermediários
Exercício |
Comando Principal |
Função |
2.1 |
s/.*\([0-9]\{4\}-[0-9]\{2\}...\)/\1/p |
Extrair datas no formato AAAA-MM-DD . |
2.2 |
s/[a-zA-Z0-9._%+-]\+@[a-zA-Z0-9.-]...\) |
Substituir e-mails por [EMAIL_OCULTADO] . |
2.3 |
42s/\([^,]*\), \([^,]*\),... |
Transformar listas delimitadas por vírgulas. |
2.4 |
/password/i [PRIVADO] |
Adicionar [PRIVADO] antes de linhas com senhas. |
2.5 |
s/R\$\?[0-9]\+,\?[0-9]*/[VALOR]/g |
Substituir valores monetários por [VALOR] . |
2.6 |
6s/\([^,]*\), \([^,]*\),... |
Alterar a ordem de palavras separadas por vírgulas. |
2.7 |
39,41s/\[\(.*\)\] \(.*\): \(.*\)/{...} |
Transformar logs em formato JSON. |
2.8 |
s/Latitude: [+-]*[0-9.]\+, Longitude... |
Substituir coordenadas por [LAT/LONG] . |
2.9 |
/[a-zA-Z0-9]\{8,\}/d |
Excluir linhas com tokens alfanuméricos longos. |
2.10 |
/[0-9]\+\.[0-9]\+/s/$/ | VALOR FINAL/ |
Adicionar sufixo em linhas com números decimais. |
Desafios - Exercícios Intermediários
2.1 Reorganizar listas separadas por vírgulas
Pergunta:
- Dado o texto “maçã, banana, laranja”, qual comando inverte a ordem para “laranja, banana, maçã”?
Resposta Esperada:
1
| sed 's/\([^,]*\), \([^,]*\), \([^,]*\)/\3, \2, \1/' texto_sed.txt
|
2.2 Normalizar e-mails
Pergunta:
- Como substituir qualquer e-mail por
[EMAIL_OCULTADO]
?
Resposta Esperada:
1
| sed 's/[a-zA-Z0-9._%+-]\+@[a-zA-Z0-9.-]\+\.[a-zA-Z]\{2,6\}/[EMAIL_OCULTADO]/g' texto_sed.txt
|
2.3 Adicionar texto condicionalmente
Pergunta:
- Qual comando adiciona
[SENHA]
antes de linhas contendo “password”?
Resposta Esperada:
1
| sed '/password/i [SENHA]' texto_sed.txt
|
Exercícios Avançados
Comando:
1
| sed 's/\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)/\3\/\2\/\1/g' texto_sed.txt
|
Explicação:
\([0-9]\{4\}\)
: Captura quatro dígitos (ano).
\([0-9]\{2\}\)
: Captura dois dígitos (mês e dia).
\3\/\2\/\1
: Reorganiza os grupos capturados para o formato DD/MM/AAAA
.
g
: Aplica a substituição em todas as ocorrências por linha.
Comando:
1
| sed '39,41s/^/# LOG: /' texto_sed.txt
|
Explicação:
39,41
: Aplica o comando às linhas 39 a 41.
s/^/# LOG: /
: Insere # LOG:
no início de cada linha.
3.3 Substituir tokens por suas versões truncadas (apenas os primeiros 5 caracteres)
Comando:
1
| sed 's/\b[a-zA-Z0-9]\{6,\}\b/\U&/g;s/\([a-zA-Z0-9]\{5\}\)[a-zA-Z0-9]*/\1/g' texto_sed.txt
|
Explicação:
- Primeiro comando:
s/\b[a-zA-Z0-9]\{6,\}\b/\U&/g
: Garante que tokens com 6 ou mais caracteres sejam selecionados.
- Segundo comando:
s/\([a-zA-Z0-9]\{5\}\)[a-zA-Z0-9]*/\1/g
: Trunca os tokens para os primeiros 5 caracteres.
Comando:
1
| sed 's/^\([a-zA-Z_]\+\)=\(.*\)/\1: \2/' texto_sed.txt
|
Explicação:
^\([a-zA-Z_]\+\)=\(.*\)
:
- Captura a chave antes do
=
e o valor depois.
\1: \2
: Substitui =
por :
.
3.5 Reverter a ordem das palavras em linhas que contenham “parágrafo”
Comando:
1
| sed '/parágrafo/s/\([^ ]*\) \([^ ]*\)/\2 \1/g' texto_sed.txt
|
Explicação:
/parágrafo/
: Filtra linhas que contêm a palavra parágrafo
.
\([^ ]*\) \([^ ]*\)
: Captura duas palavras consecutivas.
\2 \1
: Inverte a ordem das capturas.
3.6 Identificar e remover valores científicos (1.23e+10
)
Comando:
1
| sed 's/\b[0-9]\+\.[0-9]\+e[+-][0-9]\+\b//g' texto_sed.txt
|
Explicação:
\b[0-9]\+\.[0-9]\+e[+-][0-9]\+\b
:
- Seleciona valores no formato científico (e.g.,
1.23e+10
).
g
: Remove todas as ocorrências na linha.
Comando:
1
| sed '/\b\([a-zA-Z]\+\) \1\b/d' texto_sed.txt
|
Explicação:
\b\([a-zA-Z]\+\) \1\b
: Captura palavras consecutivas repetidas.
d
: Deleta linhas que atendem ao padrão.
3.8 Adicionar índice crescente a todas as linhas do arquivo
Comando:
1
| sed '=' texto_sed.txt | sed 'N;s/\n/: /'
|
Explicação:
=
:
- Exibe os números das linhas antes de cada linha do arquivo.
- Pipeline:
- Combina os números das linhas com o conteúdo usando
N
(une duas linhas consecutivas).
s/\n/: /
:
- Substitui a quebra de linha entre o número e o conteúdo da linha por
:
.
Comando:
1
| sed 's|https\?://\([^/]*\).*|\1|g' texto_sed.txt
|
Explicação:
https\?://\([^/]*\)
:
- Captura o domínio de URLs no formato
http://
ou https://
.
- Substitui a URL inteira pelo domínio.
Comando:
1
| sed -n '44,46s/\([^,]*\), \([^,]*\), \(.*\)/{\n "name": "\1",\n "age": \2,\n "city": "\3"\n},/p' texto_sed.txt
|
Explicação:
44,46
: Aplica o comando às linhas 44 a 46.
\([^,]*\), \([^,]*\), \(.*\)
:
- Captura o nome, idade e cidade.
- Formata os dados em estilo JSON.
Resumo dos Comandos Avançados
Exercício |
Comando Principal |
Função |
3.1 |
s/\([0-9]\{4\}\)-\([0-9]\{2\}...\)... |
Reorganizar datas no formato DD/MM/AAAA . |
3.2 |
39,41s/^/# LOG: / |
Adicionar # LOG antes de eventos de log. |
3.3 |
s/\b[a-zA-Z0-9]\{6,\}...\ |
Truncar tokens para os primeiros 5 caracteres. |
3.4 |
s/^\([a-zA-Z_]\+\)=\(.*\)/\1: \2/ |
Alterar chave=valor para chave: valor . |
3.5 |
/parágrafo/s/\([^ ]*\) \([^ ]*\)... |
Reverter palavras em linhas com “parágrafo”. |
3.6 |
s/\b[0-9]\+\.[0-9]\+e[+-][0-9]\+\b//g |
Remover valores científicos. |
3.7 |
/\b\([a-zA-Z]\+\) \1\b/d |
Excluir linhas com palavras repetidas consecutivas. |
3.8 |
= | sed 'N;s/\n/: /' |
Adicionar índice crescente às linhas. |
3.9 |
s|https\?://\([^/]*\)...|\1|g |
Substituir URLs pelo domínio. |
3.10 |
44,46s/\([^,]*\), \([^,]*\)... |
Criar lista JSON com nomes e cidades. |
Desafios - Exercícios Avançados
3.1 Converter logs para JSON
Pergunta:
- Dado um log
[2024-11-28 12:00:00] INFO: Serviço iniciado.
, qual comando transforma isso em JSON?
Resposta Esperada:
1
| sed 's/\[\(.*\)\] \(.*\): \(.*\)/{\n "timestamp": "\1",\n "level": "\2",\n "message": "\3"\n}/' texto_sed.txt
|
Pergunta:
- Como inverter palavras apenas nas linhas que contêm “exemplo”?
Resposta Esperada:
1
| sed '/exemplo/s/\([^ ]*\) \([^ ]*\)/\2 \1/' texto_sed.txt
|
Exercícios Especializados
Comando:
1
| sed -e '1i {' -e 's/^Linha \([0-9]*\): \(.*\)/ "linha_\1": "\2",/' -e '$s/,$/\n}/' texto_sed.txt
|
Explicação:
1i {
:
- Insere
{
na primeira linha (início do JSON).
s/^Linha \([0-9]*\): \(.*\)/ "linha_\1": "\2",/
:
- Captura o número da linha e seu conteúdo, formatando como
"linha_n": "conteúdo",
.
$s/,$/\n}/
:
- Remove a vírgula final na última linha e insere
}
para fechar o JSON.
Comando:
1
| sed -e '1i linhas:' -e 's/^Linha \([0-9]*\): \(.*\)/ - linha: \1\n texto: "\2"/' texto_sed.txt
|
Explicação:
1i linhas:
:
- Insere
linhas:
no início do arquivo (cabeçalho do YAML).
s/^Linha \([0-9]*\): \(.*\)/ - linha: \1\n texto: "\2"/
:
- Formata cada linha como um item YAML, incluindo o número e o texto correspondente.
Comando:
1
| sed -n 's|https\?://\([^/]*\).*|\1|p' texto_sed.txt | sort | uniq
|
Explicação:
https\?://\([^/]*\)
:
- Captura o domínio de URLs no formato
http://
ou https://
.
- Pipeline:
sort | uniq
: Remove domínios duplicados, listando apenas valores únicos.
4.4 Substituir números flutuantes por [FLOAT]
Comando:
1
| sed 's/\b[0-9]\+\.[0-9]\+\b/[FLOAT]/g' texto_sed.txt
|
Explicação:
\b[0-9]\+\.[0-9]\+\b
: Seleciona números flutuantes.
[FLOAT]
: Substitui os valores capturados pelo texto [FLOAT]
.
4.5 Identificar valores monetários e somar
Comando:
1
| sed -n 's/.*\([0-9]\+,\?[0-9]*\).*/\1/p' texto_sed.txt | tr ',' '.' | awk '{sum+=$1} END {print sum}'
|
Explicação:
sed -n 's/.*\([0-9]\+,\?[0-9]*\).*/\1/p'
:
- Extrai valores monetários.
tr ',' '.'
:
- Converte vírgulas para pontos (para cálculos no formato numérico).
awk
:
- Soma os valores extraídos.
Comando:
1
| sed '/^Linha [0-9]*:/s/^/# SEÇÃO: /' texto_sed.txt
|
Explicação:
/^Linha [0-9]*:/
: Seleciona linhas que começam com Linha n:
.
s/^/# SEÇÃO: /
: Adiciona # SEÇÃO:
no início dessas linhas.
Comando:
1
| sed -n '/^\[.*\]/s/\[\(.*\)\] \(.*\): \(.*\)/{\n "timestamp": "\1",\n "level": "\2",\n "message": "\3"\n}/p' texto_sed.txt
|
Explicação:
/^\[.*\]/
:
- Filtra linhas que começam com colchetes (logs).
- Substituição:
- Converte as linhas em objetos JSON com chaves
timestamp
, level
e message
.
4.8 Criar backup das linhas alteradas em um novo arquivo
Comando:
1
| sed '/exemplo/s/exemplo/EXEMPLO/w alteradas.txt' texto_sed.txt
|
Explicação:
/exemplo/s/exemplo/EXEMPLO/
: Substitui exemplo
por EXEMPLO
.
w alteradas.txt
: Salva as linhas alteradas no arquivo alteradas.txt
.
4.9 Excluir linhas contendo valores científicos (1.23e+10
)
Comando:
1
| sed '/\b[0-9]\+\.[0-9]\+e[+-][0-9]\+\b/d' texto_sed.txt
|
Explicação:
/\b[0-9]\+\.[0-9]\+e[+-][0-9]\+\b/
: Seleciona linhas com valores científicos.
d
: Deleta as linhas correspondentes.
Comando:
1
| sed '=' texto_sed.txt | sed 'N;s/\n/, /' > arquivo.csv
|
Explicação:
=
:
- Exibe o número da linha antes de cada linha do arquivo.
N;s/\n/, /
:
- Combina o número da linha com seu conteúdo, separando-os por
,
.
> arquivo.csv
:
- Salva o resultado em um arquivo CSV.
Resumo dos Comandos Especializados
Exercício |
Comando Principal |
Função |
4.1 |
s/^Linha \([0-9]*\): \(.*\)... |
Converter para JSON básico. |
4.2 |
s/^Linha \([0-9]*\): \(.*\)... |
Converter para YAML básico. |
4.3 |
s|https\?://\([^/]*\)...|\1|p |
Listar domínios de URLs. |
4.4 |
s/\b[0-9]\+\.[0-9]\+\b/[FLOAT]/g |
Substituir números flutuantes por [FLOAT] . |
4.5 |
sed + tr + awk |
Somar valores monetários extraídos. |
4.6 |
/^Linha [0-9]*:/s/^/# SEÇÃO: / |
Criar cabeçalhos baseados em palavras-chave. |
4.7 |
/^\[.*\]/s/\[\(.*\)\]... |
Formatar logs como JSON. |
4.8 |
/exemplo/s/exemplo/EXEMPLO/w alteradas.txt |
Criar backup das linhas alteradas. |
4.9 |
/\b[0-9]\+\.[0-9]\+e[+-][0-9]\+\b/d |
Excluir linhas com valores científicos. |
4.10 |
= | sed 'N;s/\n/, /' > arquivo.csv |
Adicionar índice e salvar como CSV. |
Desafios - Exercícios Especializados
4.1 Geração dinâmica de scripts
Pergunta:
- Dado o IP
192.168.0.1
, qual comando gera um script que pinga esse endereço?
Resposta Esperada:
1
| sed -n 's/.*IP \([0-9.]*\).*/ping -c 1 \1/p' texto_sed.txt > ping_script.sh
|
4.2 Processar tabelas para Markdown
Pergunta:
- Dada a tabela “Nome, Idade, Cidade”, como convertê-la para Markdown?
Resposta Esperada:
1
| sed 's/,/ | /g;s/^/| /;s/$/ |/' texto_sed.txt
|
Pergunta:
- Como listar os domínios únicos presentes no arquivo?
Resposta Esperada:
1
| sed -n 's|https\?://\([^/]*\).*|\1|p' texto_sed.txt | sort | uniq
|
Erros Comuns no Uso do sed
Aqui estão os erros mais frequentes ao usar o sed
e como resolvê-los:
1. Esquecer de Escapar Caracteres Especiais
Cenário:
Ao tentar substituir uma barra /
em uma URL, o comando falha devido ao uso incorreto do delimitador padrão.
Exemplo Errado:
1
| sed 's/http://https://g' texto_sed.txt
|
Problema:
O sed
interpreta as barras (/
) como delimitadores do comando s
.
Solução:
Escape as barras ou use um delimitador alternativo, como |
:
1
| sed 's|http://|https://|g' texto_sed.txt
|
2. Aplicar Substituições Globalmente Quando Não Necessário
Cenário:
Você deseja substituir apenas a primeira ocorrência de “teste” em cada linha, mas usa o modificador g
.
Exemplo Errado:
1
| sed 's/teste/TESTE/g' texto_sed.txt
|
Problema:
O modificador g
substitui todas as ocorrências na linha, não apenas a primeira.
Solução:
Remova o modificador g
para afetar apenas a primeira ocorrência:
1
| sed 's/teste/TESTE/' texto_sed.txt
|
3. Confundir Delimitadores em Substituições
Cenário:
Ao usar diferentes delimitadores, você se esquece de que o primeiro caractere define o delimitador para o comando inteiro.
Exemplo Errado:
1
| sed 's;http://https://;g' texto_sed.txt
|
Problema:
O ;
usado após https://
não é reconhecido como delimitador de encerramento.
Solução:
Certifique-se de que todos os delimitadores estejam consistentes:
1
| sed 's;http://;https://;g' texto_sed.txt
|
4. Falha ao Escapar Caracteres de Regex
Cenário:
Você quer substituir um ponto literal (.
) por uma vírgula, mas não escapa o ponto.
Exemplo Errado:
1
| sed 's/./,/g' texto_sed.txt
|
Problema:
O .
corresponde a qualquer caractere, não ao ponto literal.
Solução:
Escape o ponto com uma barra invertida (\
):
1
| sed 's/\./,/g' texto_sed.txt
|
5. Confundir Regex e Strings Literais
Cenário:
Você quer substituir uma string contendo *
, mas o *
é interpretado como parte da expressão regular.
Exemplo Errado:
1
| sed 's/*/TEXTO/g' texto_sed.txt
|
Problema:
O *
é um operador regex que significa “zero ou mais do caractere anterior”.
Solução:
Escape o *
ou use a opção -r
para desativar o comportamento padrão de regex:
1
| sed 's/\*/TEXTO/g' texto_sed.txt
|
6. Ignorar a Opção -i
em Edições In-Place
Cenário:
Você espera modificar diretamente um arquivo, mas o sed
imprime o resultado apenas na saída padrão.
Exemplo Errado:
1
| sed 's/exemplo/EXEMPLO/' texto_sed.txt
|
Problema:
O arquivo original não é alterado, pois o comando não usa a opção -i
(edição in-place).
Solução:
Adicione -i
para editar o arquivo diretamente:
1
| sed -i 's/exemplo/EXEMPLO/' texto_sed.txt
|
7. Aplicar Substituições em Todo o Arquivo Sem Filtrar
Cenário:
Você quer substituir “linha” apenas nas linhas que contêm “texto especial”, mas aplica o comando a todas as linhas.
Exemplo Errado:
1
| sed 's/linha/LINHA/' texto_sed.txt
|
Problema:
O comando afeta todas as ocorrências de “linha”, não apenas as desejadas.
Solução:
Adicione um filtro para restringir as linhas afetadas:
1
| sed '/texto especial/s/linha/LINHA/' texto_sed.txt
|
Cenário:
Você processa um arquivo muito grande, mas o sed
falha ao tentar capturar múltiplas linhas com N
.
Problema:
O sed
tem um limite de buffer por linha, e arquivos muito grandes podem causar problemas.
Solução:
Use ferramentas como awk
ou processe o arquivo em blocos:
1
| sed -n '1,100p' texto_sed.txt | sed 's/exemplo/EXEMPLO/g'
|
Cenário:
Você quer imprimir apenas linhas que contêm “ERROR”, mas todas as linhas aparecem na saída.
Exemplo Errado:
1
| sed '/ERROR/p' texto_sed.txt
|
Problema:
O comando imprime todas as linhas, porque o p
não suprime a saída padrão.
Solução:
Use -n
para suprimir a saída padrão:
1
| sed -n '/ERROR/p' texto_sed.txt
|
10. Substituições Sem Salvar no Arquivo Final
Cenário:
Você realiza substituições complexas, mas se esquece de redirecionar a saída para um novo arquivo.
Exemplo Errado:
1
| sed 's/exemplo/EXEMPLO/' texto_sed.txt
|
Problema:
A saída modificada é apenas exibida no terminal.
Solução:
Redirecione a saída para um arquivo ou use -i
:
1
| sed 's/exemplo/EXEMPLO/' texto_sed.txt > texto_modificado.txt
|
Ou:
1
| sed -i 's/exemplo/EXEMPLO/' texto_sed.txt
|
Resumo
Erro |
Causa |
Solução |
Esquecer de escapar caracteres |
Caracteres como / , . ou * são tratados como regex |
Use \ para escapar ou delimitadores alternativos. |
Aplicar substituições globalmente |
Uso desnecessário do modificador g |
Remova g para afetar apenas a primeira ocorrência. |
Ignorar a opção -i |
O arquivo original não é modificado |
Use -i para edição in-place. |
Esquecer de suprimir a saída |
Uso do comando p sem -n |
Adicione -n para mostrar apenas as capturas. |
Tabela de Referência Rápida do sed
Abaixo estão os principais elementos do sed
, organizados por categorias para facilitar a consulta.
1. Operadores Básicos
Comando |
Descrição |
s/padrão/subst/ |
Substitui o padrão pela substituição na linha. |
p |
Imprime a linha. |
d |
Deleta a linha selecionada. |
i texto |
Insere texto antes da linha atual. |
a texto |
Adiciona texto depois da linha atual. |
c texto |
Substitui a linha atual por texto. |
2. Modificadores do Comando s
Modificador |
Descrição |
/g |
Substitui todas as ocorrências na linha. |
/i |
Ignora maiúsculas e minúsculas na correspondência. |
/n |
Substitui apenas a n-ésima ocorrência na linha. |
3. Seleção de Linhas
Padrão |
Descrição |
N |
Seleciona a linha de número N. |
N,M |
Seleciona o intervalo de linhas de N até M. |
/regex/ |
Seleciona linhas que correspondem à regex. |
! |
Aplica o comando a linhas que não correspondem ao padrão. |
Exemplo:
1
2
3
| sed '2,4d' arquivo.txt # Remove as linhas 2 a 4
sed '/erro/d' arquivo.txt # Remove linhas contendo "erro"
sed '/^[[:space:]]*$/d' # Remove linhas vazias
|
4. Operadores de Espaço
Operador |
Descrição |
h |
Copia o conteúdo do espaço padrão (pattern space) para o espaço de retenção (hold space). |
g |
Substitui o conteúdo do espaço padrão pelo espaço de retenção. |
x |
Troca os conteúdos do espaço padrão e do espaço de retenção. |
H |
Adiciona o conteúdo do espaço padrão ao espaço de retenção. |
Exemplo:
1
| sed '/START/,/END/{h;/END/x}' arquivo.txt # Alterna as seções START/END
|
5. Classes de Caracteres
Classe |
Descrição |
Exemplo |
[[:digit:]] |
Números (0-9 ). |
/[[:digit:]]+/ (encontra números). |
[[:alpha:]] |
Letras (a-z , A-Z ). |
/[[:alpha:]]+/ (encontra palavras). |
[[:space:]] |
Espaços, tabulações, etc. |
/[[:space:]]+/ (encontra espaços). |
[[:upper:]] |
Letras maiúsculas. |
/[[:upper:]]+/ (encontra ABC ). |
[[:lower:]] |
Letras minúsculas. |
/[[:lower:]]+/ (encontra abc ). |
6. Âncoras
Âncora |
Descrição |
^ |
Representa o início da linha. |
$ |
Representa o final da linha. |
\b |
Representa a borda de uma palavra. |
Exemplo:
1
2
| sed '/^inicio/p' arquivo.txt # Imprime linhas que começam com "inicio"
sed '/fim$/p' arquivo.txt # Imprime linhas que terminam com "fim"
|
7. Escapando Caracteres Especiais
Caractere |
Descrição |
Como Escapar |
/ |
Delimitador padrão do s . |
\/ ou outro delimitador. |
. |
Qualquer caractere. |
\. (para ponto literal). |
* |
Zero ou mais do caractere anterior. |
\* (para asterisco literal). |
[ e ] |
Conjuntos de caracteres. |
\[ e \] . |
8. Opções Comuns
Opção |
Descrição |
-n |
Suprime a saída padrão; imprime apenas as linhas especificadas. |
-i |
Faz edições in-place (diretamente no arquivo). |
-e |
Permite adicionar múltiplos comandos em uma única execução. |
-f arquivo |
Lê comandos de um arquivo externo. |
9. Exemplos Rápidos
Comando |
Função |
sed 's/foo/bar/' |
Substitui foo por bar na primeira ocorrência de cada linha. |
sed -i 's/foo/bar/g' |
Substitui todas as ocorrências de foo por bar no arquivo. |
sed -n '/foo/p' |
Imprime apenas linhas contendo foo . |
sed '/foo/d' |
Deleta linhas contendo foo . |
sed '5q' |
Para a leitura após a quinta linha. |
sed 's/[0-9]/#/g' |
Substitui todos os dígitos por # . |
sed '/START/,/END/d' |
Remove todas as linhas entre “START” e “END”. |
Aqui estão exemplos de como o sed
pode ser usado em conjunto com outras ferramentas para automação e manipulação avançada de dados.
1.1 Filtrar Linhas e Substituir um Padrão
Use grep
para localizar linhas específicas e sed
para realizar substituições nelas.
Exemplo:
1
| grep 'erro' log.txt | sed 's/erro/ERRO_CRÍTICO/g'
|
Descrição:
grep 'erro' log.txt
: Seleciona apenas linhas contendo erro
.
sed 's/erro/ERRO_CRÍTICO/g'
: Substitui erro
por ERRO_CRÍTICO
nessas linhas.
1.2 Substituir Apenas em Linhas Encontradas pelo grep
Use xargs
para aplicar substituições apenas em arquivos que contenham uma palavra específica.
Exemplo:
1
| grep -l 'palavra' *.txt | xargs -I {} sed -i 's/palavra/substituta/g' {}
|
Descrição:
grep -l 'palavra' *.txt
: Lista arquivos que contêm palavra
.
xargs
: Executa sed
em cada arquivo encontrado.
2.1 Calcular Valores Após Substituições
Use sed
para formatar os dados e awk
para cálculos.
Exemplo:
1
| sed 's/,/./g' valores.txt | awk '{soma+=$1} END {print soma}'
|
Descrição:
sed 's/,/./g' valores.txt
: Substitui vírgulas por pontos nos valores numéricos.
awk
: Soma os valores processados.
2.2 Reorganizar Dados Complexos
Combine sed
e awk
para processar tabelas e reformatá-las.
Exemplo:
1
| sed 's/,/;/g' tabela.txt | awk -F';' '{print $2, $1, $3}'
|
Descrição:
sed 's/,/;/g' tabela.txt
: Substitui vírgulas por ;
.
awk -F';'
: Reorganiza as colunas.
3.1 Renomear Arquivos em Massa
Use find
para localizar arquivos e sed
para alterar seus nomes.
Exemplo:
1
| find . -name '*.txt' | sed 's/.txt$/.md/' | xargs -I {} mv {} {}
|
Descrição:
find . -name '*.txt'
: Lista arquivos .txt
.
sed 's/.txt$/.md/'
: Altera a extensão para .md
.
xargs mv
: Renomeia os arquivos.
3.2 Editar Arquivos Encontrados
Aplique mudanças diretamente nos arquivos localizados com find
.
Exemplo:
1
| find . -type f -name '*.conf' -exec sed -i 's/localhost/127.0.0.1/g' {} +
|
Descrição:
find . -type f -name '*.conf'
: Localiza arquivos .conf
.
sed -i
: Substitui localhost
por 127.0.0.1
nesses arquivos.
4.1 Processar Arquivos em Lote
Use xargs
para passar uma lista de arquivos para o sed
.
Exemplo:
1
| ls *.log | xargs sed -i 's/erro/warning/g'
|
Descrição:
ls *.log
: Lista arquivos .log
.
xargs sed -i
: Substitui erro
por warning
em todos os arquivos listados.
5.1 Substituir Baseado em Entradas Dinâmicas
Use variáveis Shell para tornar os comandos dinâmicos.
Exemplo:
1
2
| novo_valor="nova_configuracao"
sed -i "s/configuracao_antiga/$novo_valor/g" arquivo.txt
|
Descrição:
- O valor de
novo_valor
é inserido dinamicamente no comando sed
.
5.2 Gerar Comandos Baseados em um Arquivo
Extraia dados de um arquivo para criar comandos.
Exemplo:
1
| sed 's/.*/mv & &.backup/' lista_arquivos.txt | bash
|
Descrição:
sed
: Cria comandos mv
para renomear arquivos, adicionando .backup
.
| bash
: Executa os comandos gerados.
6. Casos de Uso Reais
6.1 Analisar Logs e Gerar Relatórios
Use o sed
para filtrar eventos críticos e combiná-lo com outras ferramentas para criar relatórios.
Exemplo:
1
| grep 'ERROR' log.txt | sed 's/^/[CRÍTICO] /' > erros_criticos.txt
|
Descrição:
grep
: Filtra apenas linhas com ERROR
.
sed
: Adiciona o prefixo [CRÍTICO]
a essas linhas.
Combine sed
e outras ferramentas para gerar formatos como JSON ou YAML.
Exemplo:
1
| sed 's/^\(.*\), \(.*\), \(.*\)$/- name: \1\n age: \2\n city: \3/' tabela.txt
|
Descrição:
- Converte uma tabela CSV para YAML.
Resumo de Integrações
Ferramenta |
Uso Combinado |
grep |
Filtrar linhas antes de processar com o sed . |
awk |
Realizar cálculos ou reorganizar dados após substituições. |
find |
Localizar arquivos e aplicar transformações neles. |
xargs |
Passar resultados de um comando para o sed em massa. |
Shell |
Criar scripts dinâmicos que integram substituições com outros comandos do sistema. |
Casos de Uso em Automação
1. Geração Automática de Backups
Descrição
Crie backups para arquivos de texto, adicionando a extensão .bak
e, opcionalmente, um carimbo de data.
Script
1
2
3
4
5
| #!/bin/bash
for file in *.txt; do
cp "$file" "${file%.txt}_$(date +%Y%m%d).bak"
sed -i.bak 's/localhost/127.0.0.1/g' "$file"
done
|
Explicação
cp "$file" "${file%.txt}_$(date +%Y%m%d).bak"
:
- Copia o arquivo, adicionando a data ao nome do backup.
sed -i.bak 's/localhost/127.0.0.1/g' "$file"
:
- Substitui
localhost
por 127.0.0.1
no arquivo original, criando um backup automático com .bak
.
2. Normalização de Dados em Arquivos Grandes
Descrição
Limpe e normalize grandes arquivos de texto, removendo linhas irrelevantes, múltiplos espaços e palavras-chave sensíveis.
Script
1
2
3
4
| #!/bin/bash
sed -i '/irrelevante/d' data.txt # Remove linhas com "irrelevante"
sed -i 's/[[:space:]]\+/ /g' data.txt # Substitui múltiplos espaços por um único
sed -i 's/password/[REDACTED]/g' data.txt # Substitui "password" por "[REDACTED]"
|
Explicação
/irrelevante/d
: Remove linhas irrelevantes.
s/[[:space:]]\+/ /g
: Normaliza múltiplos espaços consecutivos.
s/password/[REDACTED]/g
: Oculta palavras sensíveis.
3. Geração de Relatórios CSV
Descrição
Extraia dados de um arquivo de texto e formate-os em um relatório CSV.
Script
1
2
| #!/bin/bash
sed -n '/^Linha [0-9]*:/p' texto_sed.txt | sed 's/^Linha \([0-9]*\): \(.*\)/\1, "\2"/' > relatorio.csv
|
Explicação
- Primeiro
sed
: Filtra apenas linhas numeradas (/^Linha [0-9]*:/
).
- Segundo
sed
: Formata cada linha como número, "texto"
.
- Redirecionamento: Salva o resultado em
relatorio.csv
.
4. Limpeza de Logs e Exportação de Erros
Descrição
Filtre erros críticos de um arquivo de log e gere um relatório com timestamps.
Script
1
2
| #!/bin/bash
grep 'ERROR' logs.txt | sed 's/\[ERROR\]/[CRITICAL]/g' > erros_criticos.txt
|
Explicação
grep 'ERROR'
: Seleciona apenas linhas contendo ERROR
.
sed 's/\[ERROR\]/[CRITICAL]/g'
: Substitui a tag [ERROR]
por [CRITICAL]
.
- Redirecionamento: Salva o resultado em
erros_criticos.txt
.
Descrição
Converta logs com timestamps e mensagens em formato JSON.
Script
1
2
| #!/bin/bash
sed -n '/^\[.*\]/s/\[\(.*\)\] \(.*\): \(.*\)/{\n "timestamp": "\1",\n "level": "\2",\n "message": "\3"\n}/p' logs.txt > logs.json
|
Explicação
/^\[.*\]/
: Seleciona linhas que começam com [
.
- Substituição: Formata cada linha como JSON com
timestamp
, level
e message
.
- Redirecionamento: Salva o resultado em
logs.json
.
6. Renomear Arquivos em Massa
Descrição
Renomeie arquivos substituindo espaços por underscores.
Script
1
2
3
4
| #!/bin/bash
for file in *.txt; do
mv "$file" "$(echo "$file" | sed 's/ /_/g')"
done
|
Explicação
for file in *.txt
: Itera sobre todos os arquivos .txt
.
sed 's/ /_/g'
: Substitui espaços por underscores no nome do arquivo.
Descrição
Extraia apenas e-mails de um arquivo para análise.
Script
1
2
| #!/bin/bash
sed -n 's/.*\([a-zA-Z0-9._%+-]\+@[a-zA-Z0-9.-]\+\.[a-zA-Z]\{2,6\}\).*/\1/p' data.txt > emails_extraidos.txt
|
Explicação
- Regex: Captura e-mails no formato padrão.
- Redirecionamento: Salva os e-mails extraídos em
emails_extraidos.txt
.
8. Processar Tabelas para Markdown
Descrição
Converta uma tabela CSV para o formato Markdown.
Script
1
2
| #!/bin/bash
sed 's/,/ | /g;s/^/| /;s/$/ |/' tabela.csv > tabela.md
|
Explicação
-
s/,/ | /g : Substitui vírgulas por ` |
` (delimitador Markdown). |
s/^/| /;s/$/ |
: Adiciona barras verticais no início e no final de cada linha.
- Redirecionamento: Salva o resultado em
tabela.md
.
9. Geração de Inventários para Ansible
Descrição
Formate uma lista de servidores e IPs como inventário do Ansible.
Script
1
2
| #!/bin/bash
sed 's/\(.*\) ansible_host=\(.*\)/- name: \1\n ip: \2/' hosts.txt > inventory.yml
|
Explicação
- Regex: Captura o nome do servidor e o IP.
- Substituição: Formata como YAML.
10. Validação de Arquivos Configuracionais
Descrição
Encontre linhas inválidas em arquivos de configuração (key=value
).
Script
1
2
| #!/bin/bash
sed -n '/^[a-zA-Z_]\+=.*$/!p' config.conf > erros_config.txt
|
Explicação
^[a-zA-Z_]\+=.*$
: Seleciona linhas válidas.
!p
: Imprime linhas que não correspondem ao padrão.
Resumo
Caso de Uso |
Script/Comando Principal |
Geração de Backups |
cp "$file" "${file%.txt}_$(date +%Y%m%d).bak" |
Limpeza de Dados |
sed -i 's/[[:space:]]\+/ /g' |
Relatórios CSV |
sed 's/^Linha \([0-9]*\): \(.*\)/\1, "\2"/' |
Exportação de Logs Críticos |
grep 'ERROR' | sed 's/\[ERROR\]/[CRITICAL]/g' |
Logs para JSON |
sed 's/\[\(.*\)\] \(.*\): \(.*\)/.../' |
Renomear Arquivos |
mv "$file" "$(echo "$file" | sed 's/ /_/g')" |
Extração de E-mails |
sed -n 's/.../\1/p' |
Markdown para Tabelas |
sed 's/,/ | /g;s/^/| /;s/$/ |/' |
Inventários para Ansible |
sed 's/.../- name: \1\n ip: \2/' |
Validação de Configuração |
sed -n '/^[a-zA-Z_]\+=.*$/!p' |