Я работаю в телекоммуникационной компании, и в некоторых случаях мне нужно искать несколько номеров в определенное время. Я использую Ubuntu Sever 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

Любая обратная связь будет оценена..

2 ответа2

0

Символ канала (|) имеет особое значение как для grep, так и для вашей оболочки. Используйте кавычки, чтобы убедиться, что оболочка передает его grep без изменений.

0

Вам нужно будет использовать регулярные выражения.

В вашем конкретном случае вы можете использовать:

grep -E '(5555551234|5555551235) 20120719-18'

Заметки:

  • -E говорит grep использовать extended regular expressions
  • Не забывайте '
  • Не ставьте * в конце выражения

Просто чтобы уточнить, почему у вас есть эта ошибка: | это труба, что в основном означает, что sh перенаправит вывод первого приложения на вход второго, в данном случае 5555551235 , но sh не может найти 5555551235 , поэтому ошибка.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .