En este momento estoy usando echo "Hello World" >> file.txt
para agregar texto a un archivo, pero también necesito agregar texto debajo de una cadena determinada, digamos "[opción]", ¿es posible con sed
?
P.EJ:
Fichero de entrada
Some text
Random
[option]
Some stuff
Archivo de salida
Some text
Random
[option]
*inserted text*
Some stuff
text-processing
sed
replace
Javier Villanueva
fuente
fuente
input
lasoutput
líneas y. Porque tu Q no está claro. También podrías hacerloecho "Hello World [option]" >> file.txt
, pero no tiene sentido.Respuestas:
Agregar línea después del partido
sed '/\[option\]/a Hello World' input
Insertar línea antes del partido
sed '/\[option\]/i Hello World' input
Además, puede hacer una copia de seguridad y editar el archivo de entrada en el lugar utilizando la
-i.bkp
opción sedfuente
sed: 1: "/pattern/a some text here": command a expects \ followed by text
\ <<NEWLINE>>
después de laa
opción0,
los comandos:sed '0,/\[option\]/a Hello World' input
osed '0,/\[option\]/i Hello World' input
Sí, es posible con
sed
:Un ejemplo:
fuente
foo bar option bar option baz
. ¿Entonces el patrón se vuelvefoo bar option bar option addedstring baz
?Con
awk
:Tenga en cuenta que algunos caracteres no se pueden incluir literalmente, por lo que hay que usar secuencias de escape (comienzan con una barra diagonal inversa), por ejemplo, para imprimir una barra diagonal inversa que uno tiene que escribir
\\
.En realidad es lo mismo,
sed
pero además cada nueva línea incrustada en el texto debe ir precedida de una barra invertida:Para más detalles sobre las secuencias de escape, consulte el manual.
fuente