1

ログのテキストファイルがあります。その中で、正規表現を使用してフィールドを検索することに興味があります(Winではnotepad ++を使用しますが、Ubuntuではvimを使用してこのログテキストファイルを解析/読み取り、どちらでも問題ありません)

テキストファイルには、次のようなエントリがあります。

src.type= DEVICE_1     <-- there is a space and then a newline char after the last letter which is 1
dst.type= ZONE_1
someparam1

src.type= DEVICE_1 
dst.type= ZONE_2
someparam2

このようなエントリは、ログテキストファイルで繰り返されます。

DEVICE_1が含まれている行を検索することに興味がありますが、その後にdst.type=ZONE_2が含まれている行のみを検索します。

私は見つけるつもりです

src.type= DEVICE_1 
dst.type= ZONE_2

だがしかし

src.type= DEVICE_1
dst.type= ZONE_1

Notepad ++では、キーワードを正規表現として使用して検索できます。テキストファイルで探しているそのような出現を見つけるために、動作する正規表現または他の方法(必ずしも正規表現を含む必要はありません)を取得することができます。

正規表現を使用したnotepad++検索で以下を試しましたが成功しませんでした。

src.type= DEVICE_1 \ndst.type= ZONE_2

[ ]キャラクタークラスもやってみました。

探しているものを検索するにはどうすればよいですか?

4

3 に答える 3

2

Vimでは、次のパターンが必要なものと一致しているようです。

DEVICE_1\s*\n.*ZONE_2

/DEVICE_1\s*\n.*ZONE_2次の試合にジャンプするために使用します。

各試合で:g/DEVICE_1\s*\n.*ZONE_2/command実行するために使用します。command

:vim DEVICE_1\s*\n.*ZONE_2 % | cwquicfixウィンドウにすべての一致を一覧表示するために使用します。

を使用すると、最新の検索パターンを簡単に再利用できることに注意してください//。検索パターンを/foo操作し、満足したら、次のような置換を実行するのが一般的な戦略です。

:%s//bar
于 2013-03-15T18:33:47.893 に答える
1

Notepad ++では、「。matches newlines」チェックボックスを有効にして、次の正規表現を使用します。

src.type= DEVICE_1\s+dst.type= ZONE_2

ここに画像の説明を入力してください

于 2013-03-15T17:54:20.967 に答える
0

そこにあなたはVimに行きます:

/^\zssrc.type= DEVICE_1\ze\_.\{2,2}\_^dst.type= ZONE_2$/

重要な表現の内訳:

  1. \zs-ここから試合を開始します(ここから強調表示されます)。
  2. \ze-ここで試合を終了します(ここで強調表示されます)。
  3. \_.-と同じ.ですが、改行も含まれています。
  4. \_^--のようです^\_、正規表現の途中であるため必須です。

その他については、Vimのドキュメントを参照してください。

于 2013-03-16T01:18:19.817 に答える