Прямо сейчас я использую, echo "Hello World" >> file.txt
чтобы добавить некоторый текст в файл, но мне также нужно добавить текст ниже определенной строки, скажем, «[опция]», это возможно с sed
?
НАПРИМЕР:
Входной файл
Some text
Random
[option]
Some stuff
Выходной файл
Some text
Random
[option]
*inserted text*
Some stuff
text-processing
sed
replace
Хавьер Вильянуэва
источник
источник
input
иoutput
линии. Потому что вам Q неясно. Вы также можете сделатьecho "Hello World [option]" >> file.txt
, но это не имеет смысла.Ответы:
Добавить строку после матча
sed '/\[option\]/a Hello World' input
Вставьте строку перед матчем
sed '/\[option\]/i Hello World' input
Кроме того, вы можете сделать резервную копию и редактировать входной файл на месте, используя
-i.bkp
опцию sedисточник
sed: 1: "/pattern/a some text here": command a expects \ followed by text
\ <<NEWLINE>>
послеa
опции0,
команды:sed '0,/\[option\]/a Hello World' input
илиsed '0,/\[option\]/i Hello World' input
Да, это возможно с
sed
:Пример:
источник
foo bar option bar option baz
. Так картина станетfoo bar option bar option addedstring baz
?С
awk
:Имейте в виду, что некоторые символы не могут быть включены буквально, поэтому необходимо использовать escape-последовательности (они начинаются с обратной косой черты), например, чтобы напечатать буквенную обратную косую черту, которую нужно написать
\\
.Это на самом деле то же самое,
sed
но, кроме того, каждая новая строка в тексте должна начинаться с обратной косой черты:Для более подробной информации о escape-последовательностях обратитесь к руководству.
источник