Попытка использовать GNU AWK в Windows 10, чтобы разделить большой файл последовательности - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь использовать команду GNU awk в Windows, чтобы разделить большой файл последовательности, чтобы упростить его обработку, но я не уверен, как перевести команду awk для работы в Windows.Я использую gawk.

Это команда, которую я пытаюсь выполнить:

Я пытался выйти с двойными кавычками, но что-то еще не работает

awk 'BEGIN {n_seq=0;} /^>/ {if(n_seq%1000==0){file=sprintf("myseq%d.fa",n_seq);} print >> file; n_seq++; next;} { print >> file; }' < sequences.fa

1 Ответ

0 голосов
/ 06 февраля 2019

Попробуйте это (в командной строке):

awk 'BEGIN {n_seq=0;} /^^^>/ {if(n_seq^%1000==0){file=sprintf("myseq%d.fa",n_seq);} print ^>^> file; n_seq++; next;} { print ^>^> file; }' sequences.fa

При помещении в .bat или .cmd пакетный файл используйте это:

awk 'BEGIN {n_seq=0;} /^^^>/ {if(n_seq%%1000==0){file=sprintf("myseq%%d.fa",n_seq);} print ^>^> file; n_seq++; next;} { print ^>^> file; }' sequences.fa

Другой способ выглядит так (в командной строке):

awk "BEGIN {n_seq=0;} /^>/ {if(n_seq%1000==0){file=sprintf(\"myseq^%d.fa\",n_seq);} print >> file; n_seq++; next;} { print >> file; }" sequences.fa

или в пакетном файле , например:

awk "BEGIN {n_seq=0;} /^>/ {if(n_seq%%1000==0){file=sprintf(\"myseq%%d.fa\",n_seq);} print >> file; n_seq++; next;} { print >> file; }" sequences.fa

Протестировано с thisфайл и изменил 1000 на 3.

С cmd /?:

The special characters that require quotes are:
     <space>
     &()[]{}^=;!'+,`~

Но обычно проблема в &<>|%.
При использованиидвойные кавычки, вы должны быть осторожны, какие части в паре двойных кавычек, а какие нет.В приведенном выше примере myseq%%d.fa\ рассматриваются без кавычек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...