Scripts y patrones útiles de sed
(github.com)- Imprimir solo una línea
→ sed -n '10p' file.txt
- Reemplazar texto en todas las líneas excepto la línea 5
→ sed '5!/s/foo/bar/' file.txt
- Reemplazo con expresión regular en todas las líneas que comienzan con un carácter específico
→ sed '/^hello/ s/h/H/' file.txt
- Reemplazar solo desde la línea 5 hasta la última línea
→ sed '5,$ s/foo/bar/' file.txt
- Eliminar líneas vacías
→ sed '/^$/d' file
- Imprimir todas las líneas entre dos expresiones regulares
→ sed -nE '/^foo/,/^bar/p' file.txt
- Usar un delimitador personalizado para encontrar fácilmente texto que incluye barras
→ sed 's_/bin/bash_/bin/sh_' file.txt
- Eliminar cadenas duplicadas separadas por espacios (excepto las repetidas tres veces)
→ sed -E 's_([a-zA-Z0-9_]+) \1_\1_ig' f1
- Buscar un patrón específico, cambiarlo y guardar solo los modificados en otro archivo
→ sed 's_foo_bar_w replaced.txt' file.txt
- Reemplazar varias cosas al mismo tiempo
→ sed -e 's_foo_bar_' -e 's_hello_HELLO_' file.txt
- Eliminar todos los comentarios entre dos palabras clave e insertar una línea vacía
→ sed -E '/start/,/end/ s/#.*//' file.txt
- Borrar todos los comentarios que empiezan con #
→ sed -E '/^#/d' f1
- Imprimir solo hasta que aparezca un patrón específico
→ sed '/start/q' file.txt
- Insertar un archivo después de una línea específica
→ sed '5 r newfile.txt' file.txt
- Agregar texto en la línea siguiente a una parte que coincide con una expresión regular específica
→ sed '/foo/a\AFTER FOO' file.txt
- Reemplazar la línea que coincide con una expresión regular específica
→ sed '/foo/c\FOO IS CHANGED' file.txt
- Guardar en otro archivo todos los comentarios que empiezan con #
→ sed -E '/^#/w comments.txt' file.txt
- Imprimir cada segunda línea (saltando una línea; se puede cambiar a 3/4, etc.)
→ sed -n '1~2p' file.txt
- Modificar el archivo directamente, pero creando un respaldo
→ sed -i.bak 's/hello/HELLO/' file.txt
- Agregar dos líneas en blanco después de una coincidencia de expresión regular
→ sed -E '/^#/G G' file.txt
1 comentarios
Es un tip realmente imprescindible saber que se pueden usar caracteres distintos de la barra diagonal como delimitadores.
Porque bastante seguido hay casos en los que necesitas incluir barras diagonales, como cuando cambias la URL de un repositorio de apt.