Поиск файла текстового файла по номеру и указать диапазон и длину Grep - PullRequest
0 голосов
/ 06 ноября 2018

Так что я пытался понять это навсегда и не могу решить это.

Цель состоит в том, чтобы отфильтровать все строки в текстовом файле и показать только строки с более чем 4850 точками и максимумом 700 000.

Лучшая команда, которая у меня есть на данный момент:

grep -E '48 [1-9] {2} '"имя файла" >> файл

При этом получаются учетные записи только с точками 48__ вместе со всеми бесполезными вещами, такими как имя пользователя клиента с включенной этой комбинацией, например, loggz314895.

Этот метод будет длиться вечно, так как диапазон может варьироваться от 4850 до 700K в пунктах, и выполнение по одному за раз потребует вечности и фильтрации включенного мусора.

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

Еще раз спасибо.

Вот пример: (отредактировано по соображениям конфиденциальности).

loggz@loggz1.com, идентификатор пользователя 9826135802015973221 Очки 1685, новый логгз
время 111.111.111

loggz@loggz1.com, идентификатор пользователя 9826135802015973221 Очки 1685, новый логгз
время 111.111.111

loggz@loggz1.com, идентификатор пользователя 9826135802015973221 Очки 1685, новый логгз
время 111.111.111

Без пустой строки между каждым пользователем и временем.

Ожидаемый результат без разрыва строки:

loggz@loggz1.com, очки 1685,

loggz@loggz1.com, очки 1685,

loggz@loggz1.com, очки 1685,

1 Ответ

0 голосов
/ 06 ноября 2018

Чтобы отфильтровать столбцы и сделать сравнения, используйте awk

awk '4850 <= $5 && $5 <= 700000'

@ редактировать

awk '{ if (4850 <= $5 && $5 <= 700000) { print $1,$5; } }`
...