awk и egrep для регулярных выражений

Если вы хотите использовать мультиархитектурный подход для прозрачной эмуляции с помощью QEMU, вам нужно найти дистрибутив, который поддерживает все интересующие вас архитектуры, (вашу родную архитектуру и напрямую -поддерживаемую альтернативную архитектуру, которую вы хотите, и архитектуры, которые вы хотите эмулировать ). Вы не можете смешивать и сочетать дистрибутивы (. Raspbian для armhfи Debian для i386), поскольку мультиархитектура требует, чтобы пакеты, установленные для нескольких архитектур, устанавливались с точно одной и той же версией на всех архитектурах.

Переключение на другой дистрибутив облегчило бы эту задачу (при условии, что сам дистрибутив хорошо подходит для вашей Raspberry ), но может быть и другое решение — должна быть возможность использовать debootstrapдля установки другого дистрибутива с чужую архитектуру в chroot на вашей малине и использовать ее для запуска двоичных файлов... Я использовал прозрачную эмуляцию с мультиархитектурой и чужие архитектуры с debootstrap, так что я знаю, что различные компоненты работают, но я никогда не пробовал объединив их так, чтобы это оставалось упражнением для читателя.

0
26.03.2020, 02:48
3 ответа

Если у вас три или более a, вы можете использовать:a{3,}. Например:

$ echo a | grep -E 'a{3,}'
$ echo aa | grep -E 'a{3,}'
$ echo aaa | grep -E 'a{3,}'
aaa
$ echo aaaa | grep -E 'a{3,}'
aaaa
$ echo aaaaaaaaaa | grep -E 'a{3,}'
aaaaaaaaaa

Если вы хотите, чтобы 3 или более aсопровождались чем-то, что не является t, вы можете использовать a{3,}[^t]. Например:

$ echo aaa | grep -E 'a{3,}[^t]'
$ echo aaat | grep -E 'a{3,}[^t]'
$ echo aaax | grep -E 'a{3,}[^t]'
aaax

Обратите внимание, однако, что aне является t, так что это будет соответствовать чему-то вроде 'aaaa'; за первыми тремя aследует символ, который в данном случае не является t(,a).

$ echo aaaa | grep -E 'a{3,}[^t]'
aaaa

Если вы хотите, чтобы строка заканчивалась чем-то, что не является ни a, ни t, вы можете использовать:a{3,}[^at]. Например:

$ echo aaaa | grep -E 'a{3,}[^ta]'
$ echo aaaaaaaa | grep -E 'a{3,}[^ta]'
$ echo aaaaaaaattt | grep -E 'a{3,}[^ta]'
$ echo aaaaaaaab | grep -E 'a{3,}[^ta]'
aaaaaaaab
1
28.04.2021, 23:19

Чтобы распечатать количество последовательностей из трех или более Aс, попробуйте

awk '{print gsub (/AAAA*/, "&")}' file
3
4
4
1

Для второго запроса адаптируйте выше, например

awk '{print gsub (/AAAAA*[CG]/, "&")}' file

"за которым следует A" уже покрывается шаблоном A *.

0
28.04.2021, 23:19

from a fastq file how many reads have 3 or MORE As in a row

Так как это файл в формате fastq, для точного подсчета вам нужно просмотреть только фактические строки последовательности, а не все строки. Вы можете сделать это, используя переменную NR, чтобы ограничить совпадения только второй строкой каждого блока последовательности из 4 -строк :

.
awk 'NR%4 == 2 && /AAA/ { count++ } END { print count+0 }' foo.fastq

How many reads have a run of 4 or more As followed by something other than a T? (G C or A)

awk 'NR%4 == 2 && /AAAA([^T]|$)/ { count++ } END { print count+0 }' foo.fastq

(Обратите внимание, что это будет соответствовать AAAAAT, потому что у него есть 4 A, за которыми следует еще один A)

0
28.04.2021, 23:19

Теги

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