Вы всегда можете передать sed
команды, но в этом случае имеет смысл объединить все условия в одну команду:
sed 's/[.!?]/&\n/g' file > newfile
[.!?]
соответствует .
, !
или?
и &
в шаблоне замены помещает значение соответствия обратно в строку (новая строка добавляется сразу после этого значения).
См. онлайн-демонстрацию :
s="This is a text. Want more? Yes! End"
sed 's/[.!?]/&\n/g' <<< "$s"
Вывод:
This is a text.
Want more?
Yes!
End
Если вам нужно избавиться от пробелов после ?
, !
и .
, используйте
sed 's/\([.!?]\)[[:space:]]*/\1\n/g' file > newfile
См. еще sed
демо . Здесь:
\([.!?]\)
- Группа захвата 1: совпадения .
, !
или ?
[[:space:]]*
- 0 или более пробелов
\1
в шаблоне замены относится к значению, захваченному в Группу 1.