sed -r 's/([^ .]+ [^ .]+) /\1\n/g' <<< "Быстрая лиса перепрыгнула через ленивую собаку"
быстрый
лиса прыгнула
над
Лентяй
Набор символов [^ .]+ означает один или несколько + персонажи любого типа . исключая ^ пробелы. Итак, группа захвата ([^ .]+ [^ .]+) соответствует шаблонам как строка строка. Все регулярное выражение имеет дополнительный пробел в конце ([^ .]+ [^ .]+) (можно было включить в группу захвата, чтобы сохранить).
С сед с помощью замены с командой мы заменяем совпадающий шаблон содержимым первой группы захвата \1 и новый символ строки \n вместо пробела. Под флагом г повторяем команду до конца каждой строки. -р опция активирует расширенные регулярные выражения.
Обновление - это фактический ответ:
sed -r 's/(.{8}) /\1\n/g' <<< "Откуда мы знаем, что он будет соответствовать предварительно определенному количеству символов?"
Как мы
знаю, что это
собираюсь
соответствовать
предопределенный
количество
символы?
В этом примере мы захватываем строки длиной не менее 8 символов (включая пробелы), за которыми следует пробел.
Мы можем проверить фактическую длину выходных строк следующим образом:
sed -r 's/(.{8}) /\1\n/g' <<< "Откуда мы знаем, что он будет соответствовать предварительно определенному количеству символов?" \
| awk '{длина печати}'
9
10
8
9
11
9
11
И с помощью ответов на вопрос Как использовать printf для печати символа несколько раз? [ага] мы можем добиться желаемого результата.
sed -r 's/(.{8}) /\1\n/g' <<< "Откуда мы знаем, что он будет соответствовать предварительно определенному количеству символов?" \
| awk '{остальное=(12 - длина); printf "%s%s|\n", $0, substr(".........", 1, остальное)}'
Как мы...|
знаю, что это .. |
собираюсь....|
соответствовать...|
предопределено.|
количество...|
символы?.|
Если вы хотите разбить слова, удалите последний пробел из приведенного выше регулярного выражения. /(.{8})/. Вот пример, где максимальная длина строки будет ровно 10 символов или меньше, где второй сед команда будет обрезать пробелы вокруг каждой новой строки.
sed -r 's/(.{10})/\1\n/g' <<< "Откуда мы знаем, что он будет соответствовать предварительно определенному количеству символов?" \
| sed -r 's/(^ | $)//g' \
| awk '{остальное=(10 - длина); printf "%s%s|\n", $0, substr(".........", 1, остальное)}'
Как мы.|
знаю, что это |
собираюсь..|
соответствовать.|
предварительно определить |
d число о |
f персонаж|
р?.......|