Через linux - Существует ли калькулятор командной строки для вычисления байтов? - Переполнение стека , я обнаружил около GNU Units - хотя и без примеров на странице SO; и как я не видел его перечисленным здесь, вот небольшая заметка об этом.
Сначала проверьте, присутствуют ли единицы измерения:
$ units --check-verbose |grep byte
doing 'byte'
$ units --check-verbose |grep mega
doing 'megalerg'
doing 'mega'
$ units --check-verbose |grep mebi
doing 'mebi'
Учитывая, что они есть, выполните преобразование - спецификаторы формата printf
принимаются для форматирования числового результата:
$ units --one-line -o "%.15g" '20023450 bytes' 'megabytes' # also --terse
* 20.02345
$ units --one-line -o "%.15g" '20023450 bytes' 'mebibytes'
* 19.0958499908447
$ units --one-line -o "%.5g" '20023450 bytes' 'mebibytes'
* 19.096
-121--3960- (Для решений, приведенных ниже, я предполагаю, что перед каждой строкой заголовка + последовательности должна стоять одна пустая строка. Если вы хотите это после, дайте мне знать; Это простое изменение.)
sed
$ sed -rn 's/(.{106})/\n\1/p' file
B2S312_20116609 HWI-ST1128:217:D2HB4ACXX:8:1101:20814:45721 orig_bc=CCGCATAA new_bc=CCGCATAA bc_diffs=0 AACCATGCACCACCTGTATCTGTGTCTAACCAAAGGTCAGAACAACACAATCTCTTGTGTCCTCACAGTATGTCAAGACTT
B4S315_20116610 HWI-ST1128:217:D2HB4ACXX:8:1101:20948:45746 orig_bc=ATATGCCG new_bc=ATATGCCG bc_diffs=0 AACCATGCACCACCTGCACACGACCAACTAAATGCCACCACATCTCTGCAGTGTCGCCGTGCATGTCAAGCCTT
A2C214_20116612 HWI-ST1128:217:D2HB4ACXX:8:1101:21248:45534 orig_bc=CCTAGGAT new_bc=CCTAGGAT bc_diffs=0 AACCGTGCACCACCTGTTTTCTGGCTTCCGAAGAAGAGGAACTATCTCTAGTTCTGTCCATCAATGTCAAGACCT
-r
-r
говорит sed
использовать расширенные регулярные выражения.
-n
-n
говорит sed
не печатать строки, если не требуется явно.
s/(. {106} )/\n\1/p
Если любая строка содержит не менее 106 символов, добавьте новую строку в начало и распечатайте ее.
Поскольку пустые строки не содержат 106 символов, они не печатаются.
Поскольку линии без последовательностей ДНК короче 106 символов, они не печатаются.
Печатаются линии с последовательностями ДНК (что делает их 106 символами или длиннее). Поскольку пустые строки сами по себе не печатаются, необходимо добавить новую строку в начало строки. Таким образом, гарантируется, что каждой записи ДНК предшествует пустая линия.
sed
Если используется OSX (BSD), попробуйте:
sed -E -n -e 's/(.{106})/\n\1/p' file
awk
awk '$6 {print "\n"$0}' file
Последовательность ДНК является шестым полем на линии. Таким образом, для любой строки с непустым шестым полем мы печатаем ту строку, которой предшествует новая строка.
-121--139716-Можно использовать автономный композитор, такой как xcommgr, compton, cairo-compmgr или unagi.