Fecha de última modificación:

11 Abril, 2015 - 21:06

sed

Lee un renglón a la vez a partir de los archivos de la entrada, aplica los comandos de la lista, por orden, a cada renglón y escribe su forma editada en la salida estándar, las comillas son necesarias porque muchos de los metacaracteres de sed significan también algo para el shell (sed no altera los contenidos de la entrada), sed reconoce los comandos de grep, egrep y de fgrep.

Su sintaxis es de la forma:
sed [opciones] ´[comandos]´ archivos-de-entrada.

Algunas de sus opciones son:

i Insertar línea antes de la línea actual.

a Insertar línea después de la línea actual.

c Cambiar línea actual.

d Borrar línea actual.

p Imprimir línea actual en salida estándar.

s Sustituir cadena en línea actual.

r archivo Añadir contenido de “archivo” a la línea actual.

w archivo Escribir salida a un archivo.

! Aplicar instrucción a las líneas no seleccionadas por la condición.

q Finalizar procesamiento del archivo.


sed '3d' archivo.txt borra la tercera línea de archivo.txt

# cat archivo.txt
hola1
hola2
hola3
hola4
hola5
# sed '3d' archivo.txt
hola1
hola2
hola4
hola5

sed '3p' archivo.txt imprime dos veces linea 3 del archivo archivo.txt

# cat archivo.txt
hola1
hola2
hola3
hola4
hola5
# sed '3p' archivo.txt
hola1
hola2
hola3
hola3
hola4
hola5

sed '2q' archivo.txt muestra hasta la linea 2 del archivo.txt

# cat archivo.txt
hola1
hola2
hola3
hola4
hola5
# sed '2q' archivo.txt
hola1
hola2

sed '=' archivo.txt imprime los números de línea del archivo.txt.

# cat archivo.txt
hola1
hola2
hola3
hola4
hola5
root@kali:~/ejemplos# sed '=' archivo.txt
1
hola1
2
hola2
3
hola3
4
hola4
5
hola5
sed 's/hola/pepe/' archivo.txt sustituye la primera aparición en cada línea de hola por pepe en archivo.txt
# cat archivo.txt
hola1 hola-1 hola-2
hola2 hola-1 hola-2
hola3 hola-1 hola-2
hola4 hola-1 hola-2
hola5 hola-1 hola-2
# sed 's/hola/pepe/' archivo.txt
pepe1 hola-1 hola-2
pepe2 hola-1 hola-2
pepe3 hola-1 hola-2
pepe4 hola-1 hola-2
pepe5 hola-1 hola-2
sed 's/hola/pepe/g' archivo.txt remplaza la palabra hola por pepe del fichero archivo.txt en todas las apariciones.
# cat archivo.txt
hola1 hola-1 hola-2
hola2 hola-1 hola-2
hola3 hola-1 hola-2
hola4 hola-1 hola-2
hola5 hola-1 hola-2
# sed 's/hola/pepe/g' archivo.txt
pepe1 pepe-1 pepe-2
pepe2 pepe-1 pepe-2
pepe3 pepe-1 pepe-2
pepe4 pepe-1 pepe-2
pepe5 pepe-1 pepe-2

sed '1,3s/hola/pepe/g' archivo.txt todas las veces que aparezca hola se reemplace por pepe, pero solo hasta la línea 3, inclusive.

# cat archivo.txt
hola1 hola-1 hola-2
hola2 hola-1 hola-2
hola3 hola-1 hola-2
hola4 hola-1 hola-2
hola5 hola-1 hola-2
# sed '1,3s/hola/pepe/g' archivo.txt
pepe1 pepe-1 pepe-2
pepe2 pepe-1 pepe-2
pepe3 pepe-1 pepe-2
hola4 hola-1 hola-2
hola5 hola-1 hola-2

sed '/^$/d' fichero borrar las líneas en blanco del archivo.txt

# cat archivo.txt
hola1 hola-1 hola-2

hola2 hola-1 hola-2
hola3 hola-1 hola-2
hola4 hola-1 hola-2
hola5 hola-1 hola-2
# sed '/^$/d' archivo.txt
hola1 hola-1 hola-2
hola2 hola-1 hola-2
hola3 hola-1 hola-2
hola4 hola-1 hola-2
hola5 hola-1 hola-2

sed 's/]*>//g;/' archivo2.txt elimina la etiquetas HTML del archivo archivo2.txt


También se puede especificar un rango de caracteres de la forma:

[:alnum:] Alfanumérico [a-z A-Z 0-9]

[:alpha:] Alfabético [a-z A-Z]

[:blank:] Espacios o tabuladores

[:cntrl:] Cualquier carácter de control.

[:digit:] Dígitos numéricos [0-9]

[:graph:] Cualquier carácter visible (no espacios en blanco).

[:lower:] Minúsculas [a-z]

[:print:] Caracteres que no sean de control.

[:punct:] Caracteres de puntuación.

[:space:] Espacio en blanco.

[:upper:] Mayúsculas [A-Z]

[:xdigit:]  Dígitos hexadecimales [0-9 a-f A-F]


sed 's/[[:lower:]]/a/g' archivo.txt todas las letras minúsculas del archivo.txt serán remplazadas por la letra a

# cat archivo.txt
hola1 hola-1 hola-2
hola2 hola-1 hola-2
hola3 hola-1 hola-2
hola4 hola-1 hola-2
hola5 hola-1 hola-2
# sed 's/[[:lower:]]/a/g' archivo.txt
aaaa1 aaaa-1 aaaa-2
aaaa2 aaaa-1 aaaa-2
aaaa3 aaaa-1 aaaa-2
aaaa4 aaaa-1 aaaa-2
aaaa5 aaaa-1 aaaa-2

Nota: Si necesitas un comando más potente puedes usar awk.

Leer más sobre: 

¿Te resulto útil?: 

4

Comentarios

Tengo un problema, requiero

Tengo un problema, requiero insertar una línea al principio del archivo de texto, lo ejecuto de la siguiente manera:
sed "1i\hola" archivo.txt
Pero me devuelve:
sed: command garbled: 1i\hola

Sin embargo si lo ejecuto de esta manera, si lo hace:
sed "1i\\
hola" archivo.txt

Cual es la forma correcta de hacerlo en una sola línea, ya me canse de buscar y nadie hace referencia a esto, me pueden ayudar por favor?
Esta es mi plataforma: SunOS hsad01 5.10 Generic_150400-09 sun4v sparc sun4v

Llegando muy muy tarde, y con

Llegando muy muy tarde, y con muy pocos conocimientos. Creo que podrías intentar con:

sed 's/hola/' archivo.txt

Envíanos tús preguntas, comentarios o sugerencias

 

Solicita Asistencia

Llámenos al:+549 11 (15)32788353

Envíenos un e-mail: consultas@ ---Para enviar el SPAM--- francisconi.org

Skype Status for francisconi.hugo.adrian
 

Suscríbete

Suscríbete y recibe las últimas actualizaciones, noticias y más ...