我想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 /]#
但是我认为我可能只用一个就能做到,而我只是缺乏技能。
PIPIONE