Как показать строки после каждого соответствия grep до другого определенного соответствия?

От Подкачки Ubuntu F.A.Q., что Marcel, связанный с

Как основной минимум, настоятельно рекомендовано, что область подкачки должна быть равной на сумму физической памяти (RAM). Кроме того, рекомендуется, чтобы область подкачки была дважды суммой физической памяти (RAM) в зависимости от суммы жесткого диска

Я думаю, что необходимо увеличить область подкачки в системе. Подкачка ускоряет выделение Оперативной памяти, позволяя уже отбросить разбитые на страницы данные.

50
20.09.2011, 09:38
3 ответа

Кажется, что Вы хотите распечатать строки между'Word A'и'Word D'(включительно). Я предлагаю, чтобы Вы использовали sed вместо grep. Это позволяет Вам для редактирования диапазона входного потока, который запускается и заканчивается шаблонами, которые Вы хотите. Необходимо просто сказать sed распечатать все строки в диапазоне и никакие другие строки:

sed -n -e '/Word A/,/Word D/ p' file
78
27.01.2020, 19:33
  • 1
    Какие-либо подсказки относительно того, как сделать это эксклюзивным (для какой-либо универсальной ситуации, не просто OP's)? –  2rs2ts 18.06.2013, 20:18
  • 2
    @2rs2ts для создания этого эксклюзивным, просто добавьте | sed -e '1d;$d', это, удаляют первую и последнюю строку –  holroy 26.06.2015, 12:54

почему бы не использовать awk?

awk '/Word A/,/Word D/' filename
16
27.01.2020, 19:33
  • 1
    sed, кажется, может сделать это намного более эффективно, если большое количество файлов включено. awk может быть легче помнить, но sed, кажется, стоит липкого примечания в моем мозгу. –  JimNim 24.11.2014, 18:02
perl -lne 'print if /Word A/ .. /Word D/' file

или

cat file | perl -lne 'print if /Word A/ .. /Word D/'
9
27.01.2020, 19:33
  • 1
    +1 для противостояния нападению из автомобиля downvote. Я все еще использовал бы sed для этого, если Вам не нужно питание регулярных выражений Perl выбрать строки разграничивания. –  tripleee 02.07.2013, 12:32

Теги

Похожие вопросы