Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> grep-нуть строки с числами, в определённом диапазоне 
V
    Опции темы
ksili
Дата 2.10.2012, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Есть файл, в котором каждая строка содержит 2 числа. Одно из них дата в формате unixtime. Например, 1349049600.
Вторые числа тоже целочисленные, но в другом диапазоне - не пересекаются с этим.

Мне нужно подсчитать количество строк с этой датой в определённом диапазоне. Например, от 1346457600 до 1349049600 или от 1346587200 до 1349179200. По-разному может быть, но диапазон как правило - месяц. 
Я считаю примерно так (для первого случая):
Код

grep -c -E '134(64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90)[0-9][0-9][0-9]00' /home/collector/current.txt


Опыта в этом мало, и я понимаю, что эта регулярка не идеальна. Есть в ней косяки.
Поэтому надеюсь мне помогут следующим. 
Во-первых, скажите нет ли в инете такого сервиса, в который вводишь этот диапазон в виде unixtime или в виде человеческих дат - а он выводит соответствующую регулярку для отбора таких unixtime.
Если такой сервис есть, то вопросов больше нет - дайте только адрес. А если нет, то покажите как бы вы грепали диапазоны указанных двух примеров.

Для преобразования дат из человеческого вида к unixtime и обратно использую этот конвертер: http://www.onlineconversion.com/unix_time.htm


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
krypt3r
Дата 2.10.2012, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 3
Всего: 16



Что-то типа
Код

$ awk '$0 > 1346457600 && $0 < 1349049600' file.txt

PM MAIL   Вверх
586
Дата 2.10.2012, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: нет
Всего: 146



Код
cat aa.txt | perl -ne '/134([0-9]{2})[0-9]{3}00/ && 64 <= $1 && $1 <= 90 && print'

PM   Вверх
ksili
Дата 2.10.2012, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: нет
Всего: 17



Спасибо awk-ом получилось. Сделал так: 
Код

 gawk 'BEGIN {kol=0;} { if ( $2 > 1346587200 && $2 < 1349179200) kol++; } END {print kol;}' current




--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.