ファイルパス名とgrep値をテキストファイルとして除外

ファイルパス名とgrep値をテキストファイルとして除外

私の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

関連情報