Linux与Shell实战之Nginx日志分析 课后作业1

find_error_log() {
grep -E "^\b404\b$" | "^\b500\b$" nginx.log
}

image
报错是哪里语法处问题了么

| 要放在引号里面

放在引号里面,没报错了,也没打印数据了。

find_error_log() {
grep -E "^\b404\b$ | ^\b500\b$" nginx.log
}

1.这样写就没问题了

grep -E "\b404\b | \b500\b" nginx.log

你在找的时候加了^和$,表示是以404或者505开头结尾的数据

请教一下,为什么按照这种写法统计的结果行数和课上正确写法统计的结果行数不一样呢?

$ grep -E "\b404\b | \b500\b" nginx.log |wc -l
268
$ cat nginx.log | awk '{print $9}' | grep -E '404|500' | wc -l
267

1.第一种写法只要是404的单词都会被过滤出来,可能不止是第9列,其它列也存在这种404的,被匹配到了
2.而第二种写法是基于第9列去过滤

关闭