私がやろうとしているのは、grepを使用してApacheログを検索することです。私が見つけたいのは、特定のIPアドレスからのすべてのエントリで、その行に.htmlまたは.phpも含まれていることです。つまり、Javascript、CSS、および画像がすべて含まれていない状態で、どのページにアクセスしたかを確認したいと思います。
IPアドレスのある行を検索できることはわかってgrep '123.123.123.123' logfile
いますが、パターンに追加して、IPアドレスと「.php」または「.html」を含む行のみに一致するようにするにはどうすればよいですか?
grep '123\.123\.123\.123.*\(\.php\|\.html\)' logfile
もちろん、.php
または.html
がIPアドレスの前にない限り:
grep '\(\.php\|\.html\).*123\.123\.123\.123' logfile
いつでも両方を実行する正規表現を作成できますが、簡単なオプションは2つのgrepsを使用することです。
grep '123\.123\.123\.123' logfile | grep '\.php\|\.html'
\.
私が最初に忘れていたものは実際のドットと一致しますが、ドット自体は任意の文字と一致することに注意してください。\
入力が簡単で問題が発生しにくいため、省略した方が簡単な場合があります。またgrep -F
、Haukeの答えと同様に、固定文字列に一致するため、その必要は\
ありません。grep -E
拡張式を有効にするために使用することもできます。つまり、\
各括弧の前またはを|
省略する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加