我在一家电信公司工作,有时我需要在特定时间前后搜索多个号码。我正在使用Ubuntu 服务器 10.04。当我搜索电话时,我的正常表达是:
grep 5555551234 20120719-12*
20120719-12*
我要查找的号码的日期和时间(GMT)在哪里 。
当我使用
grep 5555551234 20120719-18* | 5555551235 20120719-18*
我只会得到第一个数字的回报
如果我使用
grep 5555551234 | 5555551235 20120719-18*
我收到-sh 5555551235 not found
对于任何反馈,我们都表示感谢..
答案1
管道符 ( |
) 对 grep 和 shell 都有特殊含义。使用引号确保 shell 将其传递给 grep unmangled。
答案2
您需要使用常用表达。
根据您的具体情况,您可以使用:
grep -E '(5555551234|5555551235) 20120719-18'
笔记:
-E
告诉 grep 使用extended regular expressions
- 不要忘记
'
- 不要把放在
*
表达式的末尾
只是为了澄清为什么会出现该错误:|
是一个管道,基本上意味着sh
将第一个应用程序的输出重定向到第二个应用程序的输入,在本例中5555551235
,但sh
找不到5555551235
,所以出现错误。