Полное расшифрование диска через DHCP

Похоже, что у вас очень длинная строка. Вы можете столкнуться с проблемами при использовании sed и awk, поскольку они съедают доступную память для выполнения этой задачи (зависит от размера файла/длины строки, конечно). Поэтому, используя двухэтапный подход, но с ограничениями по памяти, вы можете использовать tr, а затем одно из решений awk, perl или sed, описанных выше.

head -20 inputfile | 
tr '>' '\n'  > stage1
perl -ne 'print ">$1 $2\n" if /^(.*?)([ACGTU]+)$/ && length($2)>1000' < stage1 > output

Когда вы убедитесь, что все работает с первыми 20 строками, сделайте это по-настоящему в одном конвейере:

tr '>' '\n' inputfile | 
perl -ne 'print ">$1 $2\n" if /^(.*?)([ACGTU]+)$/ && length($2)>1000' > output

Мой perl-скрипт, возможно, не так эффективен, как другие, но должен справиться с задачей. Я написал его для наглядности. Выведите метку, за которой следует пробел, затем соответствующие пары оснований и новую строку, если и только если есть такая строка, содержащая более 1000 пар оснований.

4
03.11.2015, 11:52
0 ответов

Теги

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