Вы можете использовать seq
, tr
и sed
:
seq 15 | tr '\n' ' ' | sed 's/\([0-9]* [0-9]* [0-9]* [0-9]* [0-9]* \)/\1\
/g'
или как оптимизированную комбинацию ответов Оливье, Бенуа и меня (в его комментариях):
seq 15 | xargs -n 5
При выполнении такой команды
sed -e ... "datafile" >"datafile"
Вы получите результат нулевой длины. Причина в том, что оболочка устанавливает stdin и stdout перед выполнением команды. Таким образом, stdout посылается в файл datafile
, создавая или усекая его в процессе, и только после этого sed -e ... "datafile"
выполняется.
Обычным решением является нечто подобное
sed -e ... "datafile" >"datafile.tmp" && mv -f "datafile.tmp" "datafile"
Некоторые команды (включая версии sed
) имеют возможность редактирования на месте:
sed -i.bak -e ... "datafile"
sed --in-place=.bak -e ... "datafile"