巨大なパケットキャプチャファイルで不明な11の文字シーケンスを見つけようとしています。私が知っていることの1つは、私が探している文字列の形式であるということですx.x-xxxxxxx
。しばらく検索しましたが、これを実行するために必要な正しいgrepステートメントが見つかりませんでした。誰でも助けることができますか?
答え1
形式はgrep
「POSIX正規表現」(照会)と呼ばれるもので、いくつかの簡単な一致基本形式をサポートしています。英数字のみが必要であることがわかっている場合は、次の文字クラスを使用できます[a-zA-Z0-9]
。grep
この特定のクラスへのショートカット(非常に便利なので)もあります。次のようになります[[:alnum:]]
。man grep
関連情報がたくさんあります。
繰り返し回数を使用して、一致させる文字数を指定することもできます。あなたの場合は、英数字1つ、ピリオド、文字、ダッシュ、7文字を一致させようとします。 POSIX正規表現では、次のようになります。
[[:alnum:]]\.[[:alnum:]]-[[:alnum:]]{7}
メモ:
- バックスラッシュを使用してピリオドをエスケープする必要があります。それ以外の場合は、「すべての文字をキャッチ」正規表現として解析されます。
-e
繰り返し句(中括弧)が機能するにはegrep
標準grep
。
したがって、完全なコマンドは次のようになります。
egrep '[[:alnum:]]\.[[:alnum:]]-[[:alnum:]]{7}' /some/file
出力はこの式と一致する行になり、色で強調表示することもできます(端末によって異なります)。パケットファイルが行で区切られていない場合(おそらくバイナリ)、画面に多くの混乱があります。