Как я Нахожу строку в файле и помещаю строку выше его?

Я хотел бы найти Строку __MARKER__ в someFile.txt и поместите Строку выше его (например. Hello World!).

Как я сделал бы то использование sed?

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

Содержание someFile.txt:

__MARKER__

Содержание someFile.txt после управления:

Hello World!
__MARKER__
2
задан 6 June 2018 в 22:44

2 ответа

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
4
ответ дан 2 December 2019 в 01:31

Если есть только один экземпляр __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
4
ответ дан 2 December 2019 в 01:31

Другие вопросы по тегам:

Похожие вопросы: