私のWebサーバーから「404」ページのアクセスログを収集したいと思います。次のコマンドを試しました。
grep -irn "404" /var/log/httpd/www.abc.com.access_log > abc-404.txt
今、私は同じテキストファイルが欲しいです。ema8ketpl4ace9dmin指定されたパスの名前です。これは、これらの経路が望ましくないことを意味する。
--excludeオプションを使用しても役に立ちませんでした。
grep --exclude=ema8ketpl4ace9dmin > abc-404.txt
ちょうど空のテキストファイルを提供します。
答え1
grep
次のように2番目の項目を含めることができます。
grep -irn "404" /var/log/httpd/www.abc.com.access_log|grep -v ema8ketpl4ace9dmin > abc-404.txt
答え2
1つのファイルにのみ呼び出しを適用するので、なぜそのオプションを使用しているのかわかりません-r
(少なくとも最初の例では)。grep
2番目の質問には、次のものを代わりawk
に使用することをお勧めしますgrep
。
awk '$0 ~ /404/ && $0 !~ /ema8ketpl4ace9dmin/ {print}' /var/log/httpd/www.abc.com.access_log > abc-404.txt
awk
これは「404」という表現が現れるすべての行を印刷するように指示しますが、いいえ(!~
)表現「ema8ketpl4ace9dmin」。
「印刷」は、ルールが適用されるすべての行に対する標準的な操作であるため、実際には省略して簡単に言うことができます。
awk '$0 ~ /404/ && $0 !~ /ema8ketpl4ace9dmin/' /var/log/httpd/www.abc.com.access_log > abc-404.txt