Como faço para encontrar uma string em um arquivo e colocar uma string acima dela?

2

Gostaria de encontrar a String __MARKER__ em someFile.txt e colocar uma String acima dela (por exemplo, Hello World! ).

Como eu faria isso usando sed ?

sed -i -e "/__MARKER__//g" someFile.txt # Currently removes __MARKER__.

Conteúdo de someFile.txt :

__MARKER__

Conteúdo de someFile.txt após manipulação:

Hello World!
__MARKER__
    
por Nicholas Adamou 06.06.2018 / 21:31

2 respostas

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

substitui __MARKER__ por Hello world , uma nova linha e a correspondência ( & ), ou seja, o texto __MARKER__ .

O & apenas salva a digitação __MARKER__ novamente, como em

sed -i -e 's/__MARKER__/Hello world\n__MARKER__/' someFile.txt
    
por PerlDuck 06.06.2018 / 21:38
4

Se houver apenas uma única instância de __MARKER__ ou você quiser inserir a nova string antes de cada instância, você pode usar

sed -i '/__MARKER__/ iHello World!' someFile.txt

Isso usa o comando i nsert em vez do comando s ubstitute - note que no POSIX (não-GNU) sed você pode precisar colocar a string de inserção em uma linha separada:

sed -i '/__MARKER__/ i\
Hello World!
' someFile.txt

Se houver várias instâncias e você desejar inserir apenas a string antes da primeira,

sed -i '0,/__MARKER__/ s//Hello World!\n&/' someFile.txt
    
por steeldriver 06.06.2018 / 21:45

Tags