Всем привет.
Часто внутри конфигурационных файлов можно изначально наблюдать множественные комментарии от автора. Кроме того, бывают ситуации когда необходимо исключить из таких файлов комментарии, которые не должны видеть посторонние лица. Чтобы избавить себя от лишнего скроллинга предпочтительно через команду grep исключить из файла сразу все имеющиеся в нем комментарии. Чтобы с помощью grep исключить только строки по заданному условию, необходимо выполнить команду с опцией -v в качестве параметра.
Команда ниже выведет на экран из содержимого файла zabbix_agent.conf только активные настройки, удалив при этом все имеющиеся в нем комментарии и пустые строки.
grep -v '^#|^$' zabbix_agent.conf
В результате выполнения команды, будут исключены строки начинающиеся с символа решетки ^#, а фильтр ^$ удалит из файла пустые строки.
Для удобства можно перенаправить вывод в новый файл:
grep -v '^#|^$' zabbix_agent.conf > zabbix_agent_new.conf
Или более коротко, не учитывая комментариев, начинающихся не с начала строки:
grep -v '^$\|^#' zabbix_agent.conf
Чтобы с помощью grep исключить комментарии из множества файлов, можно воспользоваться скриптом ниже:
#!/bin/sh
files="/home/me/data/*.txt"
for i in $files
do
grep -v '^#|^$' $i > $i.out
mv $i.out $i
done