grep形式は可能ですか?

grep形式は可能ですか?

巨大なパケットキャプチャファイルで不明な11の文字シーケンスを見つけようとしています。私が知っていることの1つは、私が探している文字列の形式であるということですx.x-xxxxxxx。しばらく検索しましたが、これを実行するために必要な正しいgrepステートメントが見つかりませんでした。誰でも助けることができますか?

ベストアンサー1

形式はgrep「POSIX正規表現」(照会)と呼ばれるもので、いくつかの簡単な一致基本形式をサポートしています。英数字のみが必要であることがわかっている場合は、次の文字クラスを使用できます[a-zA-Z0-9]grepこの特定のクラスへのショートカット(非常に便利なので)もあります。次のようになります[[:alnum:]]man grep関連情報がたくさんあります。

繰り返し回数を使用して、一致させる文字数を指定することもできます。あなたの場合は、英数字1つ、ピリオド、文字、ダッシュ、7文字を一致させようとします。 POSIX正規表現では、次のようになります。

[[:alnum:]]\.[[:alnum:]]-[[:alnum:]]{7}

メモ:

  1. バックスラッシュを使用してピリオドをエスケープする必要があります。それ以外の場合は、「すべての文字をキャッチ」正規表現として解析されます。
  2. -e繰り返し句(中括弧)が機能するにはegrep標準grep

したがって、完全なコマンドは次のようになります。

egrep '[[:alnum:]]\.[[:alnum:]]-[[:alnum:]]{7}' /some/file

出力はこの式と一致する行になり、色で強調表示することもできます(端末によって異なります)。パケットファイルが行で区切られていない場合(おそらくバイナリ)、画面に多くの混乱があります。

おすすめ記事