¿Cómo encuentro una cadena en un archivo y coloco una cadena encima?

3

Me gustaría encontrar el String __MARKER__ en someFile.txt y colocar un String encima (por ejemplo, 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 de código anterior, el contenido de someFile.txt se encuentra 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__
    
pregunta Nicholas Adamou 06.06.2018 - 21:58

2 respuestas

3

s/…/…/ es una sustitución, reemplazando el primer con 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 la Terminal, use.

Puedes usar & como método abreviado para la coincidencia, por lo que no necesitas volver a escribirlo en el reemplazo.

sed -i -e 's/__MARKER__/Hello world\
&/' someFile.txt
    
respondido por el grg 06.06.2018 - 22:11
2
Otra opción es la función insertar de sed .

entrada:

cat someFile.txt

salida:

apple
orange
grape
pineapple
plum
_MARKER_
banana

entrada:

sed '/_MARKER_/i\
Hello World!
' someFile.txt

salida:

apple
orange
grape
pineapple
plum
Hello World!
_MARKER_
banana
    
respondido por el fd0 06.06.2018 - 22:32

Lea otras preguntas en las etiquetas