Разделение последовательности в фиксированную ширину

kexec механизм, которым рабочее ядро заменяет себя другим. Внешняя программа, делающая так, должна была бы иметь чрезвычайно глубокие знания ядра (ядер), включенного, и доступ уровня ядра ко всему на машине также. Возможно, выполнимый, но я думаю, что никто не является достаточно сумасшедшим попробовать.

4
11.03.2015, 01:29
3 ответа

с Python Test.py <вход и и test.py :

import sys
for i in sys.stdin:
     s, ident = i.rstrip().split()
     print '>{0}'.format(ident)
     while s:
          print s[:15]
          s = s[15:]
4
27.01.2020, 20:47

Вот несколько способов:

  1. Perl

     Perl -ane '$ f [0] = ~ S /. {15} / $ & \ n / g;  Печать "> $ f [1] \ n $ f [0] \ n" 'file
     
  2. awk

     awk '{i = 0;  printf ">% s \ n", $ 2;
      в то время как (I <= длина (1 доллар)) {
      printf "% s \ n", substr ($ 1, i, 15); i + = 15
      }}' файл
     

Если вы действительно хотите использовать Сгиб в awk, вы могли бы сделать

awk '{printf ">%s\n",$2; system("echo " $1 "| fold -w 15 ") }' file

Ваша попытка не удалась, потому что $ () - это оболочка, а не awk вещь. Для запуска системных команд изнутри AWK необходимо использовать систему () . Затем, чтобы пройти значение $ 1 $ 1 (последовательность), а не фактическая строка $ 1 в оболочку (если вы сделаете, оболочка попробует И оцените его, и он вернет пробел с момента $ 1 не установлен), вам нужно исключить $ 1 из кавычек.

Итак, в этом примере я использую

               |-------------------------> closing quotes for the 1st part
               |                    |----> closing quotes for the 2nd part
               v                    v   
system( " echo "  $1  " | fold -w 15")
        - ----    --- - ------------
        |  |       |  |       |----------> the 2nd part
        |  |       |  |------------------> opening quotes for the 2nd part       
        |  |       |---------------------> The awk variable, `$1`, 
        |  |                               outside the quotes.         
        |  |-----------------------------> The 1st part       
        |--------------------------------> opening quotes for the 1st part
5
27.01.2020, 20:47
awk '{ print ">"$2 ; while (length($1)) { print substr($1,1,15) ; $1=substr($1,16) } }'
3
27.01.2020, 20:47

Теги

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