LINUX.ORG.RU

В принципе, можно:
sed -n '/regex1/,$N;$q;/regex1/,/regex2/P;D'

Но для наглядности, имхо, проще через tail обрезать одну строку с конца.

Chumka ★★★
()
Ответ на: комментарий от Chumka

tail не подходит, так как совпадений промежутков /regex1/,/regex2/ много.
Я сам не разобрался пока что делает sed -n '/regex1/,$N;$q;/regex1/,/regex2/P;D' , но это тоже не подходит.

Файл выглядит примерно так
...
log asd //нужно вывести это
... //и это(может быть много строк разнообразных)
log zxc //а это не нужно выводить
...
log qwe
...

Когда я делаю sed -n '/asd/,/zxc/p' filename то выводит
log asd
...
log zxc
log asd
...
log zxc
...
И приходится еще раз запускать сед для обрезания строк с log zxc. Мне это не очень подходит

fesd
() автор топика
Ответ на: комментарий от fesd

ты не хочешь так делать, поверь. тебе придется складировать строки от первого регекспа в промежуточный буффер, а потом при встрече второго их выводить и очищать буфер. многострочный сед - это жесть, имхо. лучше запусти еще один сед, если структура действительно регулярная.

val-amart ★★★★★
()
Ответ на: комментарий от fesd

Если таких строк много, то это:

 sed -n '/regex1/,/regex2/N;$q;/regex1/,/regex2/P;D'

Chumka ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.