Главная

Thursday, 18 February 2021

Grep: исключаем лишние строки.


Всем привет.

Часто внутри конфигурационных файлов можно изначально наблюдать  множественные комментарии от автора. Кроме того, бывают ситуации когда необходимо исключить из таких файлов комментарии, которые не должны видеть посторонние лица. Чтобы избавить себя от лишнего скроллинга предпочтительно через команду 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

Успехов.

2 comments:

  1. sed -r '/^(\s*#|$)/d;' file
    OR
    grep -v '^\s*$\|^\s*\#' file

    ReplyDelete
  2. find /$HOME -type d -name "mime" # найти директорию mime в домашнем каталоге
    find /$HOME -type f -name "types" # найти файл types в домашнем каталоге

    ReplyDelete

А что вы думаете по этому поводу?