尝试在特定时间前后 Grep 多条电话号码

尝试在特定时间前后 Grep 多条电话号码

我在一家电信公司工作,有时我需要在特定时间前后搜索多个号码。我正在使用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,所以出现错误。

相关内容