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

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

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

答え1

ほとんどのgrep実装は-wオプションをサポートしています。言葉マッチ:

grep -wF audio.itunes.apple.com

または、次のように使用grepできない-w実装(Solarisなど)の場合-F

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

audio.itunes.apple.com前後にない場合にのみ含める行を探します。単語文字grep(単語文字は英数字またはアンダースコアです(GNU 2.19より前のバージョンではシングルバイト文字に制限されています))。 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

関連情報