我想grep我的rsyslog配置文件來檢查是否配置了遠(yuǎn)程日志記錄條目。我希望grep帶來的內(nèi)容如下:auth.*,authpriv.* @loghost.example.com:10514 # One "@" means UDP*.* @@loghost.example.com # Two "@" means TCP到目前為止,我已經(jīng)設(shè)法生成了以下正則表達(dá)式,該正則表達(dá)式僅帶給我以一組字母或星號開頭,以點(diǎn)開頭,然后是另一組字符或星號開頭的行:grep "^[A-Za-z|*]*\.[A-Za-z|*]" /etc/rsyslog.conf如何獲得grep來正確識別行的其余部分?由于該行之后可能跟著逗號,更多的東西,一系列空格和一個(gè)“ @”符號,或者也可能后面跟著一系列空格和一個(gè)“ @”符號。編輯:到目前為止,使用我當(dāng)前的正則表達(dá)式可以得到什么:[root@RHEL7lab /]# grep "^[A-Za-z|*]*\.[A-Za-z|*]" /etc/rsyslog.conf*.info;mail.none;authpriv.none;cron.none /var/log/messagesauthpriv.* /var/log/securemail.* -/var/log/maillogcron.* /var/log/cron*.emerg :omusrmsg:*auth.*,authpriv.* @loghost.example.com:10514 # One "@" means UDP*.* @@loghost.example.com # Two "@" means TCP[root@RHEL7lab /]#我想要一個(gè)只產(chǎn)生上面顯示的最后兩行的正則表達(dá)式。我已經(jīng)成功將其傳遞到另一個(gè)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 /]#但是我認(rèn)為我可能只用一個(gè)就能做到,而我只是缺乏技能。
1 回答

PIPIONE
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以匹配以字母數(shù)字*
或.
chars開頭的行,然后可以包含除空格以外的0+個(gè)字符,然后再包含@
任意1+個(gè)空格字符:
grep -E '^[[:alnum:]*.]+[^[:space:]]*[[:space:]]+@' file
請參閱regex演示。
更具體的正則表達(dá)式看起來像
grep -E '^([[:alnum:]]+|\*)\.([[:alnum:]]+|\*)[^[:space:]]*[[:space:]]+@' file
請參閱此正則表達(dá)式演示。
圖案細(xì)節(jié)
^
-字符串開始[[:alnum:]*.]+
-1個(gè)或多個(gè)字母數(shù)字字符,*
或.
([[:alnum:]]+|\*)
-1個(gè)以上字母數(shù)字字符或*
符號\.
-一個(gè)點(diǎn)([[:alnum:]]+|\*)
-1個(gè)以上字母數(shù)字字符或*
符號[^[:space:]]*
-除空格字符外的0+個(gè)字符[[:space:]]+
-1+空格字符@
-一個(gè)@
字符。
請注意,該-E
選項(xiàng)允許使用POSIX ERE語法(+
例如,無需轉(zhuǎn)義)。
添加回答
舉報(bào)
0/150
提交
取消