Назад | Перейти на главную страницу

Получать результаты от grep в порядке их появления?

Я пытаюсь найти в файле журнала только строки, соответствующие определенному идентификатору сеанса. Пока все работает отлично. Однако когда я получаю результаты своей команды grep, я получаю записи не в том порядке, в котором они появляются.

Если файл журнала в каталоге содержит эти данные:

SESSNUM=4437 login.jsp
SESSNUM=4437 welcome.jsp
SESSNUM=4437 info.jsp
SESSNUM=4437 logout.jsp

И я ввожу это:

grep SESSNUM=4437 * 

Я получаю такую ​​информацию:

SESSNUM=4437 logout.jsp
SESSNUM=4437 welcome.jsp
SESSNUM=4437 login.jsp
SESSNUM=4437 info.jsp

Есть ли способ заставить grep отображать совпадающие строки в том порядке, в котором они появляются в файлах журнала?

Спасибо!
IVR Мститель

grep SESSNUM=4437 *

Grep обычно возвращает вещи в порядок. Вы уверены, что получаете результаты из правильного файла журнала? Правильно ли работает, если вы укажете нужный файл журнала вместо *?

Поправка! В каталоге должен быть только один файл, содержащий номер сеанса, но я не обязательно знаю, какой именно, когда я использую grep.

Я бы посоветовал вам использовать параметр -H команды grep, чтобы вы могли быть уверены, что получаете контент только из одного файла. Это должно быть поведение по умолчанию, но то, что вы опубликовали, не включало имена файлов, если вы их не удалили.

   -H, --with-filename
          Print the file name for each match.  This is  the  default  when
          there is more than one file to search.

Возможно ли, что grep псевдоним чего-то, что нарушает порядок?

Однако я думаю, что более вероятно, что у вас есть несколько файлов в каталоге.

Списать это на заблуждение. Я пропустил grep через дополнительный grep, который я не заметил, и, объединив все в один поиск, я смог получить заказ, который искал.

Спасибо за предложения.