Оболочка: поиск шаблона в файле и извлечение блока данных, который содержит шаблон - PullRequest
0 голосов
/ 26 января 2011

Данный файл имеет следующую структуру:

a 123
b 876234
c 56456
d 65765

a 9879
b 9361
c 6527
d 823468

Таким образом, имеются блоки данных (строки, начинающиеся с a, b, c, d и пустая строкаделит два блока) и я ищу шаблон (например, 9361) внутри этого файла.Если этот шаблон находится внутри, я хочу скопировать весь блок (строка, начинающаяся с a 9879 и заканчивающаяся d 823468) и записать его в другой файл.

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

Как бы вы это сделали?

Ответы [ 3 ]

3 голосов
/ 27 января 2011

Вы можете сделать это с gawk.

gawk 'BEGIN {RS=""} /here goes your pattern/ { print $0}' INPUTFILE > OUTPUTFILE

Это устанавливает разделитель записей gawk на пустую строку (и).

НТН

2 голосов
/ 27 января 2011

Если ваши данные находятся в файле file.txt, это решение в perl.

perl -00 -ne "print if /9361/" file.txt

Результат на stdout.

  • -00 заставляет perl читатьфайл абзац за раз.
  • -n заставляет perl читать аргументы имени файла один за другим.
  • -e - для указания команды perl.
0 голосов
/ 27 января 2011

Рубин (1,8 +)

ruby -00 -ne 'print if /9361/' file
...