Помогите пожалуйста с заданием,хотя бы начать.
В созданном текстовом файле оставить в каждой строке не более 2-х слов. Остаток перенести в следующую строку. Если вторая строка в паре оказывается пустой - печатать в ней символ '='.
Нужно ли здесь использовать cut и как это сделать?
> Нужно ли здесь использовать cut и как это сделать?Не нужно, чисто башем:
while read -a R ; do
while [ ${#R[@]} -ge 1 ] ; do
if [ ${#R[@]} -gt 2 ] ; then
echo ${R[0]} ${R[1]}
R=( ${R[@]:2} )
else
echo ${R[@]}
echo =
R=()
fi
done
done
Спасибо за помощь) Но можно ли написать что-нибудь с использованием cut, sed,paste, tail, sort. На подобие такого примерчика:
pr -T 123.txt | Выводим файл без заголовка и лишних строк.
head -n3 | Выводим первые 3 строки.
tail -1 > temp1 Выводим последнюю из первых трех строк и сохраняем результат в файл temp1.
pr -T 123.txt | Выводим файл без заголовка и лишних строк.
sed 3d >temp2 Удаляем 3 строку и сохраняем результат в файл temp2.
paste -s -d"\n" temp2 temp1 > new123.txt Склеиваем 2 файла соблюдая символы из списка.
rm -f temp* Удаляем временные файлы.Не могу разобраться как это использовать на свой пример,помогите,буду очень благодарна))
Напиши по порядку. Что на входе, что ты хочешь получить на выходе.
> Напиши по порядку. Что на входе, что ты хочешь получить на выходе.Ну если я правильно поняла,то у нас есть файл с любым текстом,например:
Вы помните,
Вы всё, конечно, помните,
Как я стоял,
Приблизившись к стене,
Взволнованно ходили вы по комнате
И что-то резкое
В лицо бросали мне.
Вы говорили:
Нам пора расстаться,
Что вас измучила
Моя шальная жизнь,
Что вам пора за дело приниматься,
А мой удел -
Катиться дальше, вниз.После преобразований(В созданном текстовом файле оставить в каждой строке не более 2-х слов. Остаток перенести в следующую строку. Если вторая строка в паре оказывается пустой - печатать в ней символ '='.)должно получиться:
Вы помните,
=
Вы всё,
конечно, помните,
Как я
стоял,
Приблизившись к
стене,
Взволнованно ходили
вы по комнате
И что-то
резкое
В лицо
бросали мне.
Вы говорили:
Нам пора
расстаться,
Что вас
измучила
Моя шальная
жизнь,
Что вам
пора за дело приниматься,
А мой
удел -
Катиться дальше,
вниз.
Какой-то подозрительный пример.Строки "вы по комнате" и "пора за дело приниматься," нарушают условие "оставить в каждой строке не более 2-х слов"
Если же "остаток" - это не "каждая строка", то решение сильно проще:
cat text.txt | while read w1 w2 rest ; do
echo $w1 $w2
if [ -z "$rest" ] ; then
echo =
else
echo $rest
fi
do