kexec
механизм, которым рабочее ядро заменяет себя другим. Внешняя программа, делающая так, должна была бы иметь чрезвычайно глубокие знания ядра (ядер), включенного, и доступ уровня ядра ко всему на машине также. Возможно, выполнимый, но я думаю, что никто не является достаточно сумасшедшим попробовать.
с 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:]
Вот несколько способов:
Perl
Perl -ane '$ f [0] = ~ S /. {15} / $ & \ n / g; Печать "> $ f [1] \ n $ f [0] \ n" 'file
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
awk '{ print ">"$2 ; while (length($1)) { print substr($1,1,15) ; $1=substr($1,16) } }'