LINUX.ORG.RU

Grep после обработки файла теряет переносы строк

 , ,


0

2

Подскажите пожалуйста, как сделать что бы результаты обработки grep'ом выводились с сохранением пробелов и переносов строк?

Команда:

echo `cat v.txt` | grep -Po "(?<=(mama)).*(?=papa)"
Вывод с неё сейчас в одну строку:
 vasya petya kolya grisha
Сам файл выглядит так:
cat v.txt
mama
 vasya
   petya
kolya
grisha
papa


Тут не grep теряет переносы строк, а echo. Сравни:

echo `cat v.txt`
и
echo "$(cat v.txt)"

Kron4ek ★★★★★ ()

Пример и твой код не коррелируются. Зачем -o, если у тебя 1 слово на строку? Зачем в таком элементарном примере perl? Зачем тут вообще echo и сat? ```bash egrep «mama|papa» v.txt ``` Все. Не помню только, нужен ли egrep для использования | или и с простым grep работает.

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

Зачем в таком элементарном примере perl?

Затем, что он хочет ловит не маму/папу, а то, что между ними.

Borifed ()
Ответ на: комментарий от Kron4ek

Спасибо, это то что нужно! Только такой момент не понятен, как быть если перед mama или после papa есть определенный текст, он тоже будет выводиться в данном примере, а возможно ли его не выводить?

yuranp ()
awk '/papa/ {f=0}; f; /mama/ {f=1}' v.txt
futurama ★★★★★ ()

Зачем там вообще echo?

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