главная - Статьи - Linux, FreeBSD
Как исключить шаблон в Grep
Дата обновления: 23.12.2022Теги: Linux
Предположим, есть конфиг, содержащий комментарии, начинающиеся с символа '#'. А нужно вывести только задействованные параметры. На помощь придет grep.
Опция "-v"
less /etc/default/saslauthd | grep -v "#" START=yes DESC="SASL Authentication Daemon" NAME="saslauthd" MECHANISMS="sasldb" MECH_OPTIONS="" THREADS=5 OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
Опция -v дает указание оставить только то, что не соответствует шаблону. В данном случае, символу #.
man grep:
...
-v, --invert-match
Invert the sense of matching, to select non-matching lines.
Конечно, надо быть аккуратным, ведь шаблону "#" соответствует также строки типа "mainParam=144 #some comment", то есть грепать надо с умом.
Опция "-w"
-w, --word-regexp
Select only those lines containing matches that form whole words...
Опция -w используется для того, чтобы обозначить, что шаблон должен быть отдельным словом. Например, в конфиге postfix main.cf есть множетсво строк с опциями вида smtpd_recipient_restrictions, smtpd_sender_restrictions. Проверим, как работает grep:
# cat /etc/postfix/main.cf | grep 'smtpd' smtpd_banner = SMTPD smtpd_use_tls = yes smtpd_tls_security_level=may smtpd_tls_mandatory_protocols=TLSv1, TLSv1.1, TLSv1.2, !SSLv2, !SSLv3 ...
Добавим в конфиг две строки (они неправильные с точки зрения postfix, потом я удалю их):
# test smtpd string
smtpd
# cat /etc/postfix/main.cf | grep -w 'smtpd' # test smtpd string smtpd
Все строки вида smtpd_* не вошли в вывод, потому что опция -w пропускает только те строки, где есть отдельное слово 'smtpd'.
Опции -w и -v можно комбинировать, если того требует задача.
Авторизуйтесь для добавления комментариев!