Было обнаружено, что проблема не связана с смещением BBT, как указывалось ранее. Источником проблемы было использование squashfs, как сказано в этой ссылке:
http://elinux.org/Support_read-only_block_filesystems_on_MTD_flash
Решением было бы либо использовать другую файловую систему, либо использовать UBI для обнаружения плохие блоки.
Легко сопоставить последовательность ttt
и сообщить количество совпадений:
$ echo 'aaccgtttgtaaccggaac' | grep -o 'ttt' | wc -l
Или, если последовательность находится в файле:
$ echo 'aaccgtttgtaaccggaac'>dnafile
$ grep -o 'ttt' dnafile | wc -l
1
$ grep -o 'aac' dnafile | wc -l
3
Итак, все, что вам нужно сделать, это закодировать эту идею в скрипте bash:
#!/bin/bash
dnafile=${1-./dnafile} # Name of the file to read (arg 1)
shift # Erase arg 1.
for pat; do # Process all the other line arguments.
printf '%s ' "$pat" # Print the patern used.
grep -o "$pat" "$dnafile" | wc -l # Find the count of matches.
done # done.
Вызовите скрипт (после того, как сделаете его исполняемымchmod u+x countmatches
)вот так:
$./countmatches dnafile ttt aac ccgtttg ag
ttt 1
aac 3
ccgtttg 1
ag 0
Для неперекрывающихся -баз в строках в файле типа
aaccgtttgtaaccggaac
acacaca
, попробуйте
awk '{print gsub (base, "&")}' base="ttt" file
1
0
Для перекрытия попробуйте
awk '{while (0 < T=index ($0, base)) {CNT++; $0 = substr($0, T+1)}; print CNT+0; T = CNT = 0}' base="aca" file
0
3
Если вам нужно количество файлов вместо строк, просуммируйте CNT
и распечатайте в разделе END
.