Как я показываю последовательность цифрового символа строки?

Нет. Это - прокручивающееся среднее число.

4
30.10.2014, 16:18
4 ответа

Здесь используется гибридный подход 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

Explanation

  • 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
8
27.01.2020, 20:44

Вы можете использовать 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
2
27.01.2020, 20:44

Выполняется буферизация 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 последовательностей.

7
27.01.2020, 20:44

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
6
27.01.2020, 20:44

Теги

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