2016-08-12 5 views
3

ログファイルに直接アクセスできないサーバーがあります。セキュリティ上の理由から、ログへのアクセスはlessコマンドを実行するスクリプトを介して行われます。lessコマンドの検索

ログファイルの内容はと類似している:

08:03:52,143 DEBUG sessionid1111111 [za.co.phuthib.Service1] (http-/0.0.0.0:8905-4) initialiseProperties(): currentDate: 20160812 
08:03:52,143 DEBUG sessionid1111111 [za.co.phuthib.Service1] (http-/0.0.0.0:8905-4) cached object found 
08:03:52,143 INFO sessionid1111111 [za.co.phuthib.Service2] (http-/0.0.0.0:8905-4) passphrase: 243989895859385938394583945839548983423488234 
08:03:52,143 INFO sessionid1111111 [za.co.phuthib.Service2] (http-/0.0.0.0:8905-4) chanellID: [CHANNELID] 
08:03:52,144 INFO sessionid1111111 [za.co.phuthib.Service3] (http-/0.0.0.0:8905-4) POST: /za/co/phuthib/retrieveProductList/ 
08:03:52,144 INFO sessionid1111111 [za.co.phuthib.Service3] (http-/0.0.0.0:8905-4) Input: {"id":"3989349"} 
08:03:52,812 INFO sessionid1111111 [za.co.phuthib.Service3] (http-/0.0.0.0:8905-4) Response code [200 OK]) 

サーバは、多くのユーザーからの多くの要求を受け入れて、1つは、彼らが必要な情報を見つけるために、ファイルを検索する必要があるとして。

私はsessionid1111111を検索することができるよともza.co.phuthib.Service3 independantlyを検索することができています。

私はza.co.phuthib.Service3sessionid1111111を検索しようとしています。 は、私は正規表現でそれを試してみましたが、それは、たとえば、ワーキングように見えることはできません。

/sessionid1111111[\s]Service3 
+1

あなたは '/ \ vsessionid1 + + \ [za \ .co \ .phuthib \ .Service3 \]'のようなものを意味しますか? –

+1

または ':g/sessionid1111111 // Service3'? – dNitro

+0

WiktorStribiżewこのアプローチで私が望む結果を得ることができます。 dNitro、あなたのソリューションはより洗練されており、覚えやすいので好きですが、動作させることができません。 – Phuthib

答えて

1

内部phuthib[...]正確(のみ一致しますService3をある正規表現パターン:

sessionid1111111 +\[za\.co\.phuthib\.Service3] 

注ここで、+マッチ1つの以上のスペース、\[試合リテラル[\.試合リテラル.いる。

あなただけ

sessionid1111111.*Service3 

または短い

sessionid1{7}.*Service3 

.*試合0+できるだけ多くの文字、および1{7}試合連続7 1を使用し、精度のレベルを必要としない場合chars。 sessionid1{7}.*Service3sessionid111111111122234567 [za.co.phuthib.Service1] (http-/0.0.0.0:8905-4) Input: {"name":"Service3"}で試合を見つけること

は、それは私が強くなることができますよう 正確として、あなたのパターンを作るお勧めする理由です。

+0

私はあなたのポイントを見逃していました、私は今それを取得します。 – Phuthib

+0

経験が増えていますが、今は通常none greedyバージョンを使用しています:sessionid1111111。*?Service3?文字はsessionid1111111の後に最初に発生するService3を返します。 – Phuthib

+0

@Phuthibおめでとうございます。遅延して欲張りな量指定子は実際には[非常によく知られたトピックです](https://stackoverflow.com/questions/2301285/what-do-lazy-and-greedy-mean-in-the-context-of-regular-expressions )。 "なぜ私のパターンが最後のオカレンスに一致するのですか?"と聞こえる質問は、[this one](https://stackoverflow.com/questions/22444/)と[this one](https:// stackoverflow .com/questions/2503413)。今、[貪欲なトークン](http://stackoverflow.com/questions/24640154/)を学ぶ時間。 [改善された貪欲なトークン](https://stackoverflow.com/questions/30900794)に関するさらに詳しい情報。 –

関連する問題