Я хотел бы найти Строку __MARKER__
в someFile.txt
и поместите Строку выше его (например. Hello World!
).
Как я сделал бы то использование sed
?
sed -i -e "/__MARKER__//g" someFile.txt # Currently removes __MARKER__.
Содержание someFile.txt
:
__MARKER__
Содержание someFile.txt
после управления:
Hello World!
__MARKER__
sed -i -e 's/__MARKER__/Hello world\n&/' someFile.txt
заменяет __MARKER__
на Hello world
, новую строку и совпадение (&
), то есть текст __MARKER__
.
&
просто сохраняет набрав __MARKER__
снова, как в
sed -i -e 's/__MARKER__/Hello world\n__MARKER__/' someFile.txt
Если есть только один экземпляр __MARKER__
или , который вы хотите вставить новую строку перед каждым экземпляром, вы можете использовать
sed -i '/__MARKER__/ iHello World!' someFile.txt
. Используется . i Команда nsert вместо команды s ubstitute - обратите внимание, что в POSIX (не-GNU) sed
вам может потребоваться поместить строку вставки в отдельную строку:
sed -i '/__MARKER__/ i\
Hello World!
' someFile.txt
Если имеется несколько экземпляров, и вы хотите вставить строку только перед первым, то
sed -i '0,/__MARKER__/ s//Hello World!\n&/' someFile.txt