Scripts e padrões úteis de sed
(github.com)- Exibir apenas 1 linha
→ sed -n '10p' file.txt
- Substituir caracteres em todas as linhas, exceto na linha 5
→ sed '5!/s/foo/bar/' file.txt
- Fazer substituição com regex em todas as linhas que começam com um caractere específico
→ sed '/^hello/ s/h/H/' file.txt
- Substituir apenas da linha 5 até a última linha
→ sed '5,$ s/foo/bar/' file.txt
- Remover linhas vazias
→ sed '/^$/d' file
- Exibir todas as linhas entre duas regex
→ sed -nE '/^foo/,/^bar/p' file.txt
- Usar um delimitador personalizado para encontrar facilmente textos com barras
→ sed 's_/bin/bash_/bin/sh_' file.txt
- Remover strings duplicadas separadas por espaço (exceto as que se repetem três vezes)
→ sed -E 's_([a-zA-Z0-9_]+) \1_\1_ig' f1
- Encontrar um padrão específico, alterá-lo e salvar apenas as linhas modificadas em outro arquivo
→ sed 's_foo_bar_w replaced.txt' file.txt
- Fazer várias substituições ao mesmo tempo
→ sed -e 's_foo_bar_' -e 's_hello_HELLO_' file.txt
- Remover todos os comentários entre duas palavras-chave e inserir uma linha em branco
→ sed -E '/start/,/end/ s/#.*//' file.txt
- Apagar todos os comentários que começam com #
→ sed -E '/^#/d' f1
- Exibir apenas até aparecer um padrão específico
→ sed '/start/q' file.txt
- Inserir um arquivo após uma linha específica
→ sed '5 r newfile.txt' file.txt
- Adicionar texto na linha após uma parte que corresponda a uma regex específica
→ sed '/foo/a\AFTER FOO' file.txt
- Substituir a linha que corresponde a uma regex específica
→ sed '/foo/c\FOO IS CHANGED' file.txt
- Salvar em outro arquivo todos os comentários que começam com #
→ sed -E '/^#/w comments.txt' file.txt
- Exibir apenas cada segunda linha (uma sim, uma não; também pode ser alterado para 3/4 etc.)
→ sed -n '1~2p' file.txt
- Editar o arquivo diretamente, mas criando um backup
→ sed -i.bak 's/hello/HELLO/' file.txt
- Adicionar duas linhas em branco após uma correspondência de regex
→ sed -E '/^#/G G' file.txt
1 comentários
É realmente uma dica essencial saber que você pode usar caracteres diferentes da barra como delimitadores.
Com bastante frequência você acaba incluindo barras, como ao trocar a URL de um repositório apt.