Come trovo una stringa in un file e posto una stringa sopra di esso?

3

Vorrei trovare la stringa __MARKER__ in someFile.txt e posizionare una stringa sopra di essa (ad esempio Hello World! ).

Come faccio a farlo usando sed ?

sed -i -e 's/__MARKER__/Hello world\n__MARKER__/' someFile.txt

Tuttavia, dopo aver eseguito lo snippet sopra, il contenuto di someFile.txt è sotto:

Hello worldn__MARKER__

Contenuti di someFile.txt prima della manipolazione:

__MARKER__

Contenuto di someFile.txt dopo la manipolazione:

Hello World!
__MARKER__
    
posta Nicholas Adamou 06.06.2018 - 21:58
fonte

2 risposte

3

s/…/…/ è una sostituzione, in sostituzione del primo con il secondo . Puoi utilizzare una nuova riga nella stringa per inserire il testo sopra o sotto un'interruzione di riga.

sed -i -e 's/__MARKER__/Hello world\
__MARKER__/' someFile.txt

Sfuggi alla nuova riga con una barra rovesciata, altrimenti riceverai "newline senza escape in uno schema sostitutivo". Per digitare una nuova riga in Terminale, usa ⌥↩︎.

Puoi usare & come abbreviazione per la corrispondenza, quindi non è necessario ridigitarla nella sostituzione.

sed -i -e 's/__MARKER__/Hello world\
&/' someFile.txt
    
risposta data 06.06.2018 - 22:11
fonte
2

Un'altra opzione, è la funzione di inserimento di sed .

input:

cat someFile.txt

output:

apple
orange
grape
pineapple
plum
_MARKER_
banana

input:

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

output:

apple
orange
grape
pineapple
plum
Hello World!
_MARKER_
banana
    
risposta data 06.06.2018 - 22:32
fonte

Leggi altre domande sui tag