我想在访问日志中 grep 我的网络服务器上的“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
像这样涉及第二个:
grep -irn "404" /var/log/httpd/www.abc.com.access_log|grep -v ema8ketpl4ace9dmin > abc-404.txt
答案2
我不确定您为什么使用该-r
选项(至少在第一个示例中),因为您grep
仅将调用应用于一个文件。
对于第二个问题,我建议使用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