LINUX.ORG.RU

История изменений

Исправление debugger, (текущая версия) :

Т.е нужно как-то сделать проверку на многострочные строки

Ты хотя бы первую строчку мана на греп прочитал?

NAME
       grep - print lines that match patterns

Греп печатает строки, соответствующие критерию. Никаких многострочных сравнений в грепе нет.

С помощью опции -z можно сменить символ конца строки, но концептуально это ничего не меняет — в грепе построчная обработка файла. Если ты сдуру применишь -z к обычному текстовому файлу, то весь файл греп будет считать одной строкой (если в файле нет нуликов, а в текстовых файлах обычно их нет). Соответственно, если будет найдено соответствие, то распечатаются не две строки (в твоём понимании), а весь файл.

Мне, честно говоря, пофиг чем проверять(желательно, чтобы это было в стандартной поставке утилит debian)

Тогда бери перл. Регулярки в перле — лучшие. Кроме того, с помощью опций -p или -n можно забубенить всё в командной строке и не писать скрипт, например:

$ perl -gn -e "print for m{^$line1\n$line2\n}mg;" "$file"

где line1 и line2 — регулярки для первой и второй строк. Вот так может быть более понятно происходящее:

$ perl -gn -e "while ( $_ =~ m{^$line1\n$line2\n}mg ) { print $&; }" "$file"

многострочных строк

И да, в английском «multiline string» имеет смысл. Но то, что ты хочешь — «multiline line», а это хрень несуществующая.

Исходная версия debugger, :

Т.е нужно как-то сделать проверку на многострочные строки

Ты хотя бы первую строчку мана на греп прочитал?

NAME
       grep - print lines that match patterns

Греп печатает строки, соответствующие критерию. Никаких многострочных сравнений в грепе нет.

С помощью опции -z можно сменить символ конца строки, но концептуально это ничего не меняет — в грепе построчная обработка файла. Если ты сдуру применишь -z к обычному текстовому файлу, то весь файл греп будет считать одной строкой (если в файле нет нуликов, а в текстовых файлах обычно их нет). Соответственно, если будет найдено соответствие, то распечатаются не две строки (в твоём понимании), а весь файл.

Мне, честно говоря, пофиг чем проверять(желательно, чтобы это было в стандартной поставке утилит debian)

Тогда бери перл. Регулярки в перле — лучшие. Кроме того, с помощью опций -p или -n можно забубенить всё в командной строке и не писать скрипт, например:

$ perl -gn -e "print for m{^$line1\n$line2\n}mg;" "$file"

где line1 и line2 — регулярки для первой и второй строк. Вот так может быть более понятно происходящее:

$ perl -gn -e "while ( $_ =~ m{^$line1\n$line2\n}mg ) { print $&; }" "$file"