2011-10-29 21 views
0

次の行のCMDの後に()内に表示されているコマンドを抽出する必要があります。正規表現を使用してコマンドを抽出する

Oct 29 08:00:01 data2 crond[14368]: (root) CMD (sh -xv /home//ste-telnet.sh > /home/hari/logs/ste-telnet$(date +'%Y_%m_%d_%h_%m').succ 2> /home/hari/logs/ste-telnet$(date +'%Y_%m_%d_%h_%m').err) 

splunkはこれだけを理解するので、正規表現を使用する必要があります。

+0

コマンドは常に残りの文字列の全体にまたがるでしょうか? (文字列の終わりは常に ')'の直後になるでしょうか?) – Nightfirecat

+0

最初の(CMDの後の)複数の((と)))があります。/var/log/cron – shantanuo

答えて

1

これは少しトリッキーです(CMDを含む列が最後の列である)行の最後の事はコマンドである場合、これは動作します

0

をこの

CMD (.*)$ 

を試してみてください。問題は、そこにネストされたカッコがあることです。ですから、

CMD \((.*)\) 

を使用する場合(あなたは(実際のコマンドは、試合のグループ番号1になります)あなたのケースで正しい結果を取得しますが、それは、すぐに複数のコマンドを持っているだろうとして失敗するだろうまたはCMDの後に1組以上の最も外側のかっこ)を入力します。

関連する問題