grep で他のサブドメインを無視して正確なサブドメインを一致させる方法

grep で他のサブドメインを無視して正確なサブドメインを一致させる方法

audio.itunes.apple.comと一致させて無視するにはどうすればいいですか?http://streamingaudio.itunes.apple.comgrep を使用してログ ファイルで?

答え1

ほとんどのgrep実装-wでは、言葉マッチ:

grep -wF audio.itunes.apple.com

または、と組み合わせてgrep使用​​できない実装 (Solaris など)の場合:-w-F

grep -w 'audio\.itunes\.apple\.com'

audio.itunes.apple.com前後に次の文字が付いていない行のみを検索します。単語の文字(単語文字は英数字またはアンダースコア (2.19 より前のバージョンの GNU では 1 バイト文字に制限) ですgrep)。Solaris などの一部の実装では、非単語文字が行の先頭にない限り、一致した文字列が単語文字で始まる (必ずしも終わるとは限らない) ように制限されています (ただし、一致した部分の最初の文字は常に単語文字grepであるため、この場合は違いはありません)。a

したがって、ここでは は非単語文字なのでhttp://audio.itunes.apple.comに一致しますが、その前にくる は単語文字なのでには一致しません。/http://streamingaudio.itunes.apple.comgaudio

POSIX では次のようになります。

grep -E '(^[^[:alnum:]_])audio\.itunes\.apple\.com([^[:alnum:]_]|$)'

または BRE の場合:

grep -x '\(.*[^[:alnum:]_]\)\{0,1\}audio\.itunes\.apple\.com\([^[:alnum:]_].*\)\{0,1\}'

grepGNU を含むいくつかの実装では、非単語と単語の間の遷移に一致する正規表現演算子をgrepサポートしています(Solarisのには、上記と同じ奇妙な追加の制限があります)。したがって、次のように使用できます。\<grep\<-w

grep '\<audio\.itunes\.apple\.com'

それらのgrep実装では。

答え2

-v、--invert-matchを使用してください

一致の意味を反転して、一致しない行を選択します。(-v は POSIX で指定されます。)

grep -vhttp://streamingaudio.itunes.apple.com

関連情報