Найти записи, представленные до сегодняшнего дня

как найти рекордные данные о сильфонах с «Последней датой» до сегодняшней даты. т.е.: если сегодня дата 09-04-2014, то поиск записи с «Последней датой» до 09-04-2014

Email ID : abc@domain.com Last Date : 30-04-2014 -- Email ID : abc@domain.com Last Date : 18-03-2014 -- Email ID : abc@domain.com Last Date : 18-02-2013 -- Email ID : abc@domain.com Last Date : 18-05-2015 -- Email ID : abc@domain.com Last Date : 01-05-2012 -- Email ID : abc@domain.com Last Date : 09-04-2014 

Ожидаемый результат:

 Email ID : abc@domain.com Last Date : 18-03-2014 -- Email ID : abc@domain.com Last Date : 18-02-2013 -- Email ID : abc@domain.com Last Date : 01-05-2012 

3 Solutions collect form web for “Найти записи, представленные до сегодняшнего дня”

Один из способов – с Perl. Мы читаем фрагменты вашего ввода, установив разделитель входных данных на «-», как вы можете предположить. Мы переформатируем дату «День-месяц-год» в форму, которую мы можем численно сравнить; а именно YYYYMMDD. В общем и целом:

 #!/usr/bin/env perl use strict; use warnings; my @t = localtime(); my $today = sprintf( "%04d%02d%02d", $t[5] + 1900, $t[4] + 1, $t[3] ); local $/ = "--"; #...record separator... while (<>) { if (m{Last Date : (\d\d)-(\d\d)-(\d\d\d\d)}) { my $then = sprintf( "%04d%02d%02d", $3, $2, $1 ); print if ( $then < $today ); } } 1; 

Предполагая, что вы на самом деле сценарий «myfilter», вы можете выполнить, передав вам входные данные в программу или просто выполните:

 $ myfilter inputdata 

Не так элегантно, как решение Perl, но то же самое можно сделать с Awk по существу тем же алгоритмом:

 BEGIN{ FS = " : |\n" RS = "--\n?"; Padding = " 00 00 00"; Today = mktime(strftime("%Y %m %d") Padding); } { Last_date = gensub(/([0-9]{2})-([0-9]{2})-([0-9]{4})/, "\\3 \\2 \\1", "g", $4); if (mktime(Last_date Padding) < Today) { sub(/\n$/, "", $0); print Sep $0; Sep = "--\n" } } 

Вот еще одно решение perl :

 $ perl -MTime::Local -nle ' BEGIN { $/ = "--" } ($dd,$mm,$yy) = (localtime)[3..5]; $today = timelocal(0,0,0,$dd,$mm,$yy); $h{$1} = $_ if /Last Date : (.*)$/; END { print $h{$_} for grep { ($d,$m,$y)=split "-",$_; timelocal(0,0,0,$d,$m-1,$y) < $today; } keys %h }' file 

Здесь я использую timelocal() основного модуля Time::Local для преобразования даты в эпоху, она будет обрабатывать случай, когда дата ввода недействительна.

  • Возврат результата из Perl Regex
  • Обертывание предложений в столбцы
  • Добавить / Добавить столбец в качестве первого столбца в файл с разделителями табуляции
  • Присоединить несколько файлов в столбце каталога wise
  • Почему вы должны избегать «строго столбчатых» форматов ввода?
  • фильтрация данных на основе разделителя в оболочке
  • Как заставить программы python вести себя как соответствующие инструменты unix?
  • Как стандартизировать количество символов в столбце?
  • Вставить одноколоночные файлы с одинаковым именем, используя имя каталога в качестве имени столбца
  • Найти записи, представленные в файле 1, также как в файле 2, так и в файле 3
  • Скрипт, который сканирует журналы, извлекает определенные данные и создает выходной каталог
  • Interesting Posts

    Отображать файлы по размеру с нижней и верхней границей без использования `find`

    Использование VNC без разблокировки экрана блокировки локально

    Почему пакет debian jessie от MongoDB не устанавливает сценарий init.d?

    Почему режим текстового режима медленно прокручивается?

    Сервер утверждает, что нет свободного места, но имеет 5 ТБ

    Максимальное количество открытых файлов в Linux

    Почему версия программного обеспечения i386 устанавливается в системе x86_64?

    Как копировать и перемещать последовательное подмножество файлов?

    Bash: Родной способ избавиться от цитаты вокруг каждого элемента массива

    Как Linux Mint 13 GUI (Cinnamon) знает, какие пользователи имеют права администратора?

    Резервное копирование сценариев

    Как предварительно загружать мой .so каждый раз, когда приложение выполняется?

    Как запускать команды терминала и выполнять команды на Linux (Mint 17.2, KDE, плазма)?

    Регистрация события для создания компакт-диска?

    команда для перезагрузки как пользователь без полномочий root

    Linux и Unix - лучшая ОС в мире.