
Sé que esta pregunta probablemente ya haya sido respondida antes. He visto muchos hilos sobre esto en varios lugares, pero las respuestas suelen ser difíciles de encontrar para mí. Estoy buscando ayuda con un ejemplo de uso del comando 'sed'.
Digamos que quería actuar sobre el archivo "hello.txt" (en el mismo directorio que el mensaje). En cualquier lugar que contenga la frase "pocos", debería cambiarse por "asd". ¿Cómo sería el comando?
Respuesta1
sed
es elstreameditor, en el sentido de que puedes usar |
(tubería) para enviarflujos estándar(STDIN y STDOUT específicamente) a través de sed
ellos y modificarlos mediante programación sobre la marcha, lo que la convierte en una herramienta útil en la tradición de la filosofía Unix; pero también puede editar archivos directamente, utilizando el -i
parámetro que se menciona a continuación.
Considera lo siguiente:
sed -i -e 's/few/asd/g' hello.txt
s/
se usa parassustituir la expresión encontrada few
por asd
:
Los pocos, los valientes.
Los asd, los valientes.
/g
significa "global", lo que significa hacer esto para toda la línea. Si deja de lado /g
(con s/few/asd/
, siempre debe haber tres barras diagonales sin importar qué) y few
aparece dos veces en la misma línea, solo la primera few
se cambia a asd
:
Los pocos hombres, las pocas mujeres, los valientes.
Los hombres asd, las pocas mujeres, los valientes.
Esto es útil en algunas circunstancias, como alterar caracteres especiales al comienzo de las líneas (por ejemplo, reemplazar los símbolos de mayor que que algunas personas usan para citar material anterior en hilos de correo electrónico con una tabulación horizontal y dejar una desigualdad algebraica citada más adelante en la línea). intacto), pero en su ejemplo donde especifica queen cualquier lugar few
ocurre, debe ser reemplazado, asegúrese de tenerlo /g
.
Las siguientes dos opciones (banderas) se combinan en una -ie
:
-i
La opción se utiliza para editar.in lugar en el archivo hello.txt
.
-e
opción indica elmixpression/comando a ejecutar, en este caso s/
.
Nota: Es importante que utilice -i -e
para buscar/reemplazar. Si lo hace -ie
, crea una copia de seguridad de cada archivo con la letra 'e' adjunta.
Respuesta2
sed -i 's/fea/asd/g' hello.txt
gramo:Global
s:sustituto
-i: trabaja en tiempo real con el archivoen su lugar