Здесь используется гибридный подход perl/fold:
$ echo "The cat hopped in a box." | fold -w 1 |
perl -lne 'push @k, "$_ "; push @l,sprintf "%-2s",$.; END{print "@k\n@l"}'
T h e c a t h o p p e d i n a b o x .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
fold -w 1
: при этом входной символ будет складываться на ширину одного символа, в результате чего каждый входной символ будет выведен в отдельной строке. perl -lne
: -l
удаляет из входного сигнала новые строки и добавляет новую строку к каждому вызову , выведенному на печать
; n
считывает строку за строкой и e
предоставляет скрипт для его выполнения. push @k, " $_";
: Добавьте пробел к текущей строке ($_
) и сохраните его в массиве @k
. push @l,sprintf "%-2s",$.;
: sprintf
вернет отформатированную строку, здесь мы даем ей текущий номер строки ($.
) и говорим вывести ее с пробелами, добавленными по мере необходимости, чтобы сделать ее длиной 2. Затем строка добавляется в массив @l
. END{печать "@k\n@l"}'
: после считывания всего файла распечатайте два массива. Если нужно просто пронумеровать символы и не возражать против многострочного вывода, то более простым подходом будет (использование более короткой строки для краткости):
$ echo "foo bar" | fold -w1 | cat -n
1 f
2 o
3 o
4
5 b
6 a
7 r
Вы можете использовать perl
:
$ echo The cat hopped in a box. | perl -nle '
printf "%-3s", $_ for split //;
printf "\n";
printf "%-3s", $_ for 1..length'
T h e c a t h o p p e d i n a b o x .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Выполняется буферизация Stdout, вероятно, из-за системного перенаправления
Добавление sys.stdout.flush () после записи или среды PYTHONUNBUFFERED решит эту проблему
См. также вопрос переполнения стека Буферизация выходных данных Python .
-121--59587-Если установлена Java, попробуйте выполнить следующее:
jar xf filename.zip
Java поддерживает извлечение zip-файлов большего размера.
-121--253316-Очень просто использовать оболочку и основные инструменты:
$ echo "The cat hopped in a box." |
(read a ; echo $a | sed 's/./& /g' ; seq -ws" " 01 ${#a})
T h e c a t h o p p e d i n a b o x .
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
последовательностей считывается в переменную $ a
. ()
выполнит команды внутри них в вложенной оболочке , необходимой для обеспечения доступности переменной $ a
. Затем он передается в sed
, который заменяет каждый символ на себя, за которым следуют два космический. Наконец, команда seq
печатает список 0
- добавленных номеров от 01
до длины $ a
последовательностей.
zsh
:
$ text='The cat hopped in a box.'
$ chars=(${(s::)text})
$ print -aC$#chars $chars {1..$#chars}
T h e c a t h o p p e d i n a b o x .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24