Я не уверен, что понимаю правильно, так как Ваше описание проблемы не соответствует Вашему желаемому выводу, но если различные записи в Вашем файле разделяются последовательными новыми строками, можно использовать режим абзаца и Perl:
$ perl -000ne 'print if /keyword/' file
Data engine-1
Data engine-1
Data
Data
Data engine-1 **keyword-1**
Data engine-1
Data engine-3
Data engine-3
Data
Data
Data engine-3 **keyword-1**
Data engine-3
Волшебство является этими-000, это включает режим абзаца Perl, который заставляет его разделить файлы на абзацы. Другими словами, записи разделяются двумя или больше последовательными \n символами. Мы затем говорим этому печатать, если текущая запись содержит ключевое слово.
Вы могли также выполнить в этом gawk
:
$ gawk 'BEGIN{RS=ORS="\n\n"}/keyword/' file
RS
входной разделитель записей, который мы устанавливаем на 2 последовательных новых строки для корректного парсинга файла. ORS
выходной разделитель записей, который также должен быть установлен распечатать новую строку между каждой печатной записью.
Используйте это:
$ dpkg --get-selections | grep -o "^linux-image-$(uname -r)"
linux-image-3.13.0-32-generic
или
$ dpkg -l | grep -o "linux-image-$(uname -r)"
linux-image-3.13.0-32-generic
EDIT: Если у вас несколько версий одного и того же релиза ядра, запустите следующий скрипт bash
:
#!/bin/bash
rel="$(uname -r)"
ver="$(uname -v)"
current="${rel%-*}.${ver:1:2}"
echo "$(dpkg -l | grep -Po "linux-image-${rel}(?=\s+${current})")"