Предположим, мы сформулируем требования следующим образом:
Всякий раз, когда "pattern" встречается внутри абзаца, мы хотели бы, чтобы эта строка начинала новый абзац, за исключением случаев, когда "pattern" встречается в первой строке абзаца.
Кроме того, мы не против нормализовать файл так, чтобы между абзацами было ровно одна пустая строка, и никаких пустых строк в начале или конце.*
Если эти требования приемлемы, мы можем воспользоваться преимуществами режима абзацев Awk (включил пустое значение в RS
):
awk 'BEGIN { RS=""; FS="\n" }
{ print sep $1;
for (i = 2; i <= NF; i++)
{ if ($i ~ /pat/) print ""; print $i }
sep=FS }'
В режиме абзацев записи являются абзацами. Поскольку мы используем \n
в качестве FS
, поля $1, $2, ... $NF
соответствуют строкам абзацев. Например, если NF
равно 5, то мы имеем дело с пятистрочным абзацем. Разделяющие абзац новые строки удаляются, и каждая запись $0
содержит только внутренние новые строки между строками, и разделение полей производится по ним.
Абзац имеет по крайней мере одну строку, потому что абзацы не могут быть пустыми: пустой абзац выглядит как две последовательные новые строки, которые являются частью одной и той же последовательности разделения абзацев.
Поэтому, не проверяя, что NF
не меньше 1, мы просто печатаем первую строку параграфа с помощью print sep $1
. В первый раз sep
пуст, поэтому не имеет значения; но после первого абзаца мы устанавливаем sep
на новую строку, так что следующий print sep $1
создаст разделение абзацев.
После печати первой строки мы перебираем оставшиеся строки, если они есть, и печатаем их. Здесь мы проверяем, соответствует ли каждая строка шаблону. Если да, то перед печатью выводим дополнительную пустую строку.
Возможно, вы имеете в виду пакет .deb
. bash-static
, который является статически связанной версией bash
, что означает, что это автономная программа, которая не зависит ни от чего другого (особенно от библиотек) на вашем диске.
Я использовал его в двух разных случаях:
bash
, даже в катастрофических ситуациях, когда ld.so
или libc
не работают (отсутствуют, повреждены, плохо сконфигурированы, ...)bash
, поскольку я использовал некоторые расширенные функции, представленные в bash v4.3.