Как вставить текст после определенной строки в файле?

Во время перезагрузки runlevel установлен на 6 (0 для завершения работы, 1 для режима техобслуживания, и 2–5 для нормального функционирования).

if [ "$(runlevel | sed 's/.* //')" = 6 ]; then
  echo "A reboot is in progress"
fi

Это, очень вероятно, не будет полезно, так как будет только очень маленькое окно (часто меньше чем одна секунда), во время которого машина все еще принимает команды после того, как перезагрузка инициировалась.

При необходимости в уведомлении после того, как компьютер перезагрузил, заставьте его отправить сообщение (по ssh, электронной почте, SNMP или независимо от того, что удобно) как часть его процесса запуска, после того, как все сервисы, в которых Вы нуждаетесь, запускаются.

72
24.03.2014, 23:24
3 ответа
[12200]Добавить строку после матча[12201]sed '/\[option\]/a Hello World' вход[12202]Вставить строку перед матчем[12203]sed '/\[option\]/i Hello World' вход[12204]Дополнительно можно сделать резервную копию и отредактировать входной файл на месте, используя [114602]-i.bkp[114603] опцию для sed[114133].
108
27.01.2020, 19:31
[114092]Да, это возможно с помощью [114576]sed[114577]:[12183]Пример:[12184]
33
27.01.2020, 19:31

С awk :

awk '1;/PATTERN/{ print "add one line"; print "\\and one more"}' infile

Имейте в виду, что некоторые символы не могут быть включены буквально, поэтому нужно использовать escape-последовательности (они начинаются с обратной косой черты), например чтобы напечатать буквальную обратную косую черту, нужно написать \\ .

На самом деле то же самое с sed , но, кроме того, перед каждой встроенной новой строкой в ​​тексте должна стоять обратная косая черта:

sed '/PATTERN/a\
add one line\
\\and one more' infile

Для получения более подробной информации о escape-последовательностях обратитесь к руководству.

5
27.01.2020, 19:31

Теги

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