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