Греп из строки в строку

У меня есть файл с преследуемыми тысячами строк. Мне нужно grep от линии к другой линии и включить все между этими линиями

т. е. линии с 1 Wed Nov 25 23:08:01 GMT 2015 до Wed Nov 25 23:59:24 GMT 2015

 [...] abc abc abc Wed Nov 25 23:08:01 GMT 2015 def def def def ... (1000 lines with def) Wed Nov 25 23:59:24 GMT 2015 xyz xyz xyz [...] 

Можете ли вы предложить, что такое правильное выражение grep?

2 Solutions collect form web for “Греп из строки в строку”

Комбинация sed и grep должна делать трюк. Что-то вроде этого:

 sed '1,/Wed Nov 25 23:08:01 GMT 2015/d;/Wed Nov 25 23:59:24 GMT 2015/,$d' < file.txt | grep <yourstring> 

Обратите внимание, что этот пример не будет содержать строки, соответствующие датам, только все между ними.

Я не могу предложить выражение grep , потому что это не то, что означает grep .

Я бы предложил вместо этого использовать perl и оператор диапазона:

 #!/usr/bin/env perl use strict; use warnings; while ( <> ) { print if m/Wed Nov 25 23:08:01 GMT 2015/ .. /Wed Nov 25 23:59:24 GMT 2015/; } 

Который, если отформатирован как один вкладыш, становится:

 perl -ne 'print if m/Wed Nov 25 23:08:01 GMT 2015/ .. /Wed Nov 25 23:59:24 GMT 2015/' 

Примечание. Это текстовое сопоставление, а не числовое (как в случае с регулярным выражением). Можно было бы преобразовать эти даты и использовать время.

Вы можете сделать это численно следующим образом:

 #!/usr/bin/env perl use strict; use warnings; use Time::Piece; my $start = Time::Piece->strptime( 'Nov 25 23:00:00 GMT 2015', '%b %d %H:%M:%S GMT %Y' ); my $end = Time::Piece->strptime( 'Nov 25 23:59:00 GMT 2015', '%b %d %H:%M:%S GMT %Y' ); my $last_timestamp; while ( my $line = <DATA> ) { chomp($line); my $timestamp = eval { Time::Piece->strptime( $line, '%a %b %d %H:%M:%S GMT %Y' ) }; $timestamp //= $last_timestamp; if ( $timestamp > $start and $timestamp < $end ) { print $line,"\n"; } $last_timestamp = $timestamp; } __DATA__ [...] abc abc abc Wed Nov 25 23:08:01 GMT 2015 def def def def ... (1000 lines with def) Wed Nov 25 23:59:24 GMT 2015 xyz xyz xyz [...] 

(Примечание. Даты не строко соответствуют вашему вводу – мы разбираем их на числовые значения и проверяем в пределах диапазона).

  • bash syntax - команда обертывания внутри sudo :: tail logs до тех пор, пока строка не будет найдена с таймаутом с использованием Terraform
  • Эквивалент grep для awk или sed
  • Захват в переменных оболочки аргументов после команды (между скобками)
  • Работает в командной строке, но не в сценарии оболочки
  • Weird zsh grep -P поведение
  • grep с шаблоном из одного файла (3.2Gb), соответствующего в другом файле (4.8Gb)
  • Извлечь номер строки файла, который имеет ненулевое значение перед указанной строкой
  • Используйте grep для соответствия текста в нескольких файлах
  • Почему regex '. +' Работает так, как ожидалось?
  • Почему grepping с цветом ничего не возвращает?
  • Согласование нескольких шаблонов на одной строке
  • Interesting Posts

    Перезапустить приложение после завершения

    Как сохранить переменные awk в области видимости?

    Почему моя распашная раковина открывает fstab, содержит так много записей subvol btrfs?

    Восстановить моментальный снимок Btrfs из подкаталога в родительский

    Как «резервное копирование» файлов и папок в / home / при добавлении, удалении и реорганизации файлов / папок в / home /?

    Игнорировать пробелы для цикла при печати имени файла?

    В чем разница между optirun и primusrun (шмель)

    Как удалить файлы, которые не заканчиваются на «.c»?

    Можно ли использовать команды Unix для cp-файла в моем подкаталоге на удаленный компьютер через SSH?

    Установка Linux / NetBSD на старом Sky digibox?

    Как выполнить действие ссылки печати LaTeX в Linux Adobe?

    Разрешение конфликтов pc FreeBSD

    Перерасход ресурсов Grsecurity

    Можно ли позволить фоновому процессу непрерывно выводить на терминал?

    Слишком сложная проблема с авторизацией login_keys только для root на Solaris 11

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