Тогда как насчет:
#!/bin/bash
# add a space every three letters
str="acgtttgggcccagctctccgccctcacacacaccccggggt"
result=$(sed -e 's/\(...\)/\1 /g' <<< "$str")
echo $result
# check if the 4th sequence is repeated two times
awk '
{ ref = $4; # set the 4th sequence as a reference
for (i=5; i<=NF; i++) # iterate from 5th sequence to the end
if (ref == $i) count++ # count the same one as the reference
printf "4th sequence \"%s\" repeated %d times.\n", ref, count
}' <<< "$result"
, что дает:
acg ttt ggg ccc agc tct ccg ccc tca cac aca ccc cgg ggt
4th sequence "ccc" repeated 2 times.
Сценарий состоит из двух частей: 1-й, чтобы разделить строку пробелами, и 2-й, чтобы подсчитать повторение 4-го триплета.
- Скрипт
sed
sed -e 's/\(...\)/\1 /g'
вставляет пробел после каждых трех букв.
- Сценарий
awk
циклически повторяет последовательности, аналогичные четвертому триплету.
- Если вы просто хотите убедиться, что повторение точно два раза или нет, вы можете изменить скрипт для сравнения
count
с 2.
Надеюсь, это поможет.