Me gustaría encontrar la Cadena __MARKER__
y someFile.txt
colocar una Cadena encima (p. ej. Hello World!
).
¿Cómo haría eso usando sed
?
sed -i -e 's/__MARKER__/Hello world\n__MARKER__/' someFile.txt
Sin embargo, después de ejecutar el fragmento anterior, el contenido de someFile.txt
está a continuación:
Hello worldn__MARKER__
Contenido de someFile.txt
antes de la manipulación:
__MARKER__
Contenido de someFile.txt
después de la manipulación:
Hello World!
__MARKER__
s/…/…/
es una sustitución, reemplazando el primero …
por el segundo …
. Puede usar una nueva línea en su cadena para insertar texto arriba o debajo de un salto de línea.
sed -i -e 's/__MARKER__/Hello world\
__MARKER__/' someFile.txt
Escape la nueva línea con una barra invertida, de lo contrario obtendrá "nueva línea sin escape dentro del patrón de sustitución". Para escribir una nueva línea en Terminal, use ⌥↩︎.
Puede usarlo &
como abreviatura para la coincidencia, por lo que no necesita volver a escribirlo en el reemplazo.
sed -i -e 's/__MARKER__/Hello world\
&/' someFile.txt
someFile.txt
tiene // __MARKER__
en él? Note el //
. ¿Tengo que escapar?// Hello world
en __MARKER__
la línea después. No estoy seguro de a qué se refiere con escape //
, la sustitución busca únicamente la cadena de marcador y la reemplaza con la sustitución.Otra opción es sed
la función de inserción .
aporte:
cat someFile.txt
producción:
apple
orange
grape
pineapple
plum
_MARKER_
banana
aporte:
sed '/_MARKER_/i\
Hello World!
' someFile.txt
producción:
apple
orange
grape
pineapple
plum
Hello World!
_MARKER_
banana
glen jackman