LINUX.ORG.RU

Вопрос про regexp'ы


0

0

Вопрос наверное совсем идиотский, но... Нужно grep'ом найти определенную
строку, за которой следует пустая строка. Например:

$ cat abc
abc
abc

abc

Нужно, чтобы grep отфильтровал только вторую строку. Пробовал по-всякому
уже, не получается, скажем:

cat abc | grep "abc\n\n"
cat abc | grep "abc$^$"
cat abc | grep "abc$^.*$"
...

Как же правильно-то? 8/

anonymous

Ответ на: Re: Вопрос про regexp'ы от lego_12239

Re: Вопрос про regexp'ы

2 lego_12239: Не то, мне нужен regexp, соответствующий моим условиям, то есть _определенная_ строка, а следом -- пустая строка. Использовать этот regexp я, в общем-то, буду в sed :-)

anonymous ()

Re: Вопрос про regexp'ы

регексп в grep по своему замыслу относится только к одной строке

Открой для себя awk, все в лоб делается:

cat file | awk 'BEGIN { flag=0 } /abc/ { prev=$0; flag=1 } (/^$/ && flag == 1) { print prev } !/abc/ { flag=0 }'

dilmah ★★★★★ ()
Ответ на: Re: Вопрос про regexp'ы от lego_12239

Re: Вопрос про regexp'ы

Ну почему сложности? Неужели нет такого регулярного выражения, которое соответствовало бы моим требованиям? Нужно просто заменить определенную строку и следующую за ней пустую строку на что-нибудь, типа так:

sed 's/\(some_string\)\n/\1 blahblahblah/'

anonymous ()
Ответ на: Re: Вопрос про regexp'ы от anonymous

Re: Вопрос про regexp'ы

Сложности, возникают тогда, когда начинаешь понимать как работают regexp'ы; а когда не понимаешь, то и сложностей нет.

Для указанного варианта(замена) немного меняется указанный dilmah способ. И все.

lego_12239 ()

Re: Вопрос про regexp'ы

Понятно, всем спасибо! Просто думал sed'ом можно это решить, копаю в сторону awk :-)

anonymous ()

Re: Вопрос про regexp'ы

pcregrep -M

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