Я хотел бы получить grep из моего файла конфигурации rsyslog, чтобы проверить, настроены ли записи удаленного ведения журнала.
Строки, которые я бы хотел привести в grep:
auth.*,authpriv.* @loghost.example.com:10514 # One "@" means UDP
*.* @@loghost.example.com # Two "@" means TCP
До сих пор мне удалось создать следующее регулярное выражение, которое приносит мне только строки, начинающиеся с набора букв или звездочки, за которыми следует точка, а затем другой набор символов или звездочка:
grep "^[A-Za-z|*]*\.[A-Za-z|*]" /etc/rsyslog.conf
Как мне заставить grep правильно определить остальную часть строки? Поскольку за строкой может следовать запятая, дополнительные символы, последовательность пробелов и знак "@", или за ней может следовать последовательность пробелов и знак "@".
Редактировать: Что я могу получить с моим текущим регулярным выражением:
[root@RHEL7lab /]# grep "^[A-Za-z|*]*\.[A-Za-z|*]" /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
auth.*,authpriv.* @loghost.example.com:10514 # One "@" means UDP
*.* @@loghost.example.com # Two "@" means TCP
[root@RHEL7lab /]#
Я хочу регулярное выражение, которое будет производить только последние две строки, показанные выше.
Мне удалось передать его другому grep следующим образом:
[root@RHEL7lab /]# grep "^[A-Za-z|*]*\.[A-Za-z|*]" /etc/rsyslog.conf | grep "\s@"
auth.*,authpriv.* @loghost.example.com:10514 # One "@" means UDP
*.* @@loghost.example.com # Two "@" means TCP
[root@RHEL7lab /]#
Но я думаю, что я мог бы сделать это всего за один раз, мне просто не хватает навыков.