как просмотреть или загрузить журналы BIOS из HPilo CLI DL380p

Реализация в вопросе проблематична и неэффективна.

Вы читаете файл построчно и создаете команду sedиз входной строки. Эта команда может вести себя неожиданно, если строка содержит какие-либо специальные символы регулярных выражений, такие как .^$[]и т. д.

Затем вы обрабатываете весь файл с помощью sedодин раз для каждой строки, которую необходимо изменить. Вы можете обрабатывать каждую строку по отдельности вместо многократной обработки всего входного файла.

Я предлагаю использовать awkдля обработки файла и использовать оболочку сценария оболочки, которая обрабатывает временный выходной файл.(awkне поддерживает редактирование места -, например sedили perl.)

#!/bin/bash
filename='myconfigfile.conf'

temp=${filename}.temp

awk '/^[^   ]/ { comment=0 }     # stop commenting if line starts with non-space.
     /^someconfig/ { comment=1 } # start commenting if line starts with "someconfig"
     comment {$0 = "#" $0}       # prepend "#" to whole line ($0)
     { print }' $filename > $temp && mv -f $temp $filename || rm -f $temp

При желании можно добавить правило

     /^[    ]*$/ { comment=0 }   # stop commenting on empty line or space only

, чтобы прекратить комментирование, когда появляется пустая строка или строка, содержащая только пробелы.

Обратите внимание, что [^ ]и [ ]содержат один пробел и один символ табуляции.

Сценарий не обнаруживает какие-либо отступы. Он просто добавляет "#"к тому, что находится в строке (, включая отступ ), пока commentне равен нулю.

0
16.01.2021, 22:03
0 ответов

Теги

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