Строка Bash, разделенная разделителем, ограниченным числом символов

Я хочу разбить длинный текст, разделенный пробелами, через bash, но не получается. Приведенная ниже команда разбивается на символы, но не на разделители.

echo "The quick fox jumped over the lazy dog" | fold -w 10
echo "The quick fox jumped over the lazy dog" | sed -e 's/.\{9\}/&\n/g'

Было бы неплохо иметь его для взаимодействия пользователя с bash.

Синтаксис ввода

format_text 10 "The quick fox jumped over the lazy dog"

Вывод:

The quick 
fox jumped 
over the 
lazy dog

Вы должны заметить, что третья строка отрезала бы букву "l" от "lazy", если бы не правило интервала.

Обновление: Текущий результат хороший. Есть некоторая проблема с рабочим слайсером, который я не могу решить самостоятельно: он не разбивает слова до того, как будет превышен лимит.

#!/bin/bash

printHeader () {
    declare -i line_length=$3
    
    # Upper and lower fences 
    local upper_command="print \"$1\" *" 
    local upper_fence="$(python -c "$upper_command $line_length")"
    
    local lower_command="print \"$2\" *"
    local lower_fence="$(python -c "$lower_command $line_length")"
    
    # Slice words by some chracter counter
    local regex_counter="s/(.{$line_length}) /\1\n/g"
    
    # Complete line with dots and a pipe
    local res="$line_length - length"
    local repeat_pattern='$(repeat res \".\"; echo)'
    local fill_command="{res=($res); printf \"%s%s|\n\", $0, $repeat_pattern}"

    echo "$upper_fence"

    sed -r "$regex_counter" <<< $4

    echo "$lower_fence"
}

printHeader "#" "#" 10 "The quick fox jumped over the lazy dog"

Текущий вывод без окончательного токена:

##########
The quick fox
jumped over
the lazy dog
##########
1
задан 2 February 2022 в 05:57

0 ответов

Другие вопросы по тегам:

Похожие вопросы: