我正在尝试从我的日志文件中提取错误行:
我用过这个:
more report.txt | grep -E (?i)(error)
我收到此错误消息:
bash: syntax error near unexpected token `('
我做错了什么?我正在尝试提取包含“错误”的所有行,忽略区分大小写,因此它可能是错误,错误,错误等。
答案 0 :(得分:4)
你的产品线的问题在于外壳是由shell而不是grep拾取的,你需要引用它们:
grep -E '(?i)(error)' report.txt
对于这项特殊任务,其他答案当然是正确的,你甚至不需要这些答案。
答案 1 :(得分:3)
你可以这样做:
grep -i error report.txt
实际上不需要more
该文件,然后将其传递给grep
。您可以将文件名作为参数传递给grep
。
要使搜索不区分大小写,请使用-i
的{{1}}选项。
并且实际上没有必要选择grep
选项,因为您使用的模式-E
不是扩展的正则表达式。
您看到的错误的原因是您的模式error
由shell解释,因为shell除了在此上下文中看到(?i)(error)
之外它没有抛出错误,类似于当你(
时。
要解决此问题,请引用您的模式。但这不会解决您在文件中找到ls (*)
的问题,因为模式error
会查找字符串(?i)(error)
!!
答案 2 :(得分:1)
你可以使用
grep -i error report.txt
答案 3 :(得分:0)
这将实现相同的结果
cat report.txt | grep -i error
如果你想分页结果:
cat report.txt | grep -i error | more