我正在尝试多次grep搜索,但由于某种原因它无法正常工作:
输入:
What time is it in India
Time in Israel
Dogs are awesome
I want chocolate cake
欲望输出:
What time is it in India
chocolate cake
我使用了命令:
grep "(What time is it)|(chocolate cake)" inputfile.txt
但是我得到了一个空输出。你知道为什么会出错吗?
答案 0 :(得分:3)
你必须逃避管道(|
),因为它是一个特殊字符。
grep "what time is it\|chocolate cake" inputfile.txt
正则表达式中的parens是多余的,可以不用了。如果你离开他们,他们也必须逃脱:
grep "\(what time is it\)\|\(chocolate cake\)" inputfile.txt
答案 1 :(得分:1)
使用egrep
代替grep
。 grep
无法理解您使用的正则表达式:
$ egrep "(what time is it)|(chocolate cake)" input.txt
what time is it in India
i want chocolate cake
更确切地说,现代类Unix系统上的man grep
告诉:
在基本正则表达式中,元字符?,+,{,|,(和) 失去他们的特殊意义;而是使用backslashed版本\?, +,{,\ |,(和)。
因此,以下将使用相同的结果:
grep "\(what time is it\)\|\(chocolate cake\)" input.txt