2010-10-21 45 views
18

Podría alguien explicar este comando para mí:comando "sed" en bash

cat | sed -e 's,%,$,g' | sudo tee /etc/init.d/dropbox << EOF 
    echo "Hello World" 
EOF 

¿Qué hace el comando "sed"?

+1

sed es la abreviatura de "editor de flujo" - edita flujos de bytes/caracteres. –

+1

Podrías haber preguntado eso como un comentario a mi respuesta, me hubiera gustado expandirlo. – Benoit

Respuesta

22

sed es el Stream EDitor. Puede hacer un montón completo de really cool things, pero el más común es el reemplazo de texto.

La parte s,%,$,g de la línea de comandos es el comando sed para ejecutar. El s representa el sustituto, los caracteres , son delimitadores (se pueden usar otros caracteres; /, : y @ son populares). El % es el patrón para que coincida (aquí un signo de porcentaje literal) y el $ es el segundo patrón para hacer coincidir (aquí un signo de dólar literal). El g al final significa g reemplazar globalmente en cada línea (de lo contrario, solo actualizaría la primera coincidencia).

+1

Por alguna razón, sed reemplaza todas las líneas por mí, no solo la primera cuando dejo afuera la 'g' al final. p.ej. 'sudo sed -i 's, enabled = 0, enabled = 1,'/etc/yum.repos.d/epel.repo' en una imagen AWS de Amazon con sed versión 4.2.1 – Programster

+2

sed siempre se ejecutará en cada línea. La opción 'g' hace que reemplace cada coincidencia en esa línea en lugar de la primera coincidencia en esa línea. –

5

Se lee Hello World (cat), reemplaza todas las ocurrencias (g) de % por $ y (sobre) lo escribe en /etc/init.d/dropbox como root.

18

Aquí sed está reemplazando todas las ocurrencias de % con $ en su entrada estándar.

Como ejemplo

$ echo 'foo%bar%' | sed -e 's,%,$,g' 

producirá "foo bar $ $".

1

sed es un editor de flujo. Yo diría que el hombre intento sed.If no encontró esta página hombre en su sistema se refiere este URL:

http://unixhelp.ed.ac.uk/CGI/man-cgi?sed

+1

+1 para la página de manual. –

Cuestiones relacionadas