В оболочке zsh
и любом средстве просмотра изображений, которое будет отображать изображения в том порядке, в котором они заданы в командной строке, вы можете использовать квалификатор oL
glob для сортировки расширения glob по размеру:
feh./*.jpg(oL) # from smallest to largest
feh./*.jpg(OL) # from largest to smallest
feh./*.jpg(^oL) # from largest to smallest
Использованиеsed
:
sed -E '/^@/{ N; s/^(.*)#(.*)\/1(.*)/\1#\2\/1\3\2AGTCGGAGGC/; }' infile
если строка начиналась с @
, то прочитайте N
дополнительную строку и захватите 3 группы, которые позже мы будем использовать, чтобы вернуть их обратно в соответствии с вашими требованиями к порядку, а также добавить 2AGTCGGAGGC
.
Я предлагаю вам использовать комбинацию awk и seqkit . Следующая команда преобразует данные в файл, разделенный вкладкой -, которым легче манипулировать, а затем возвращает его обратно в fastq.
seqkit fx2tab text.fq | awk '{ tag=$1; gsub(/(^.*#)|(\/1$)/,"", tag); print $1 "\t" $2 tag "\t" $3 "FFFFFFFFFF"}' | seqkit tab2fx
После этого вы получите желаемый результат, включая расширение показателей качества с использованием phred+33 для поддержания правильного форматирования fastq:
@V300088128L1C001R0010000004#TCCTCGCATG/1
TTCAAGTAATCCAGGATAGGCTTCCTCGCATG
+
FFDFFFFFFFFGFFFFFFFFFFFFFFFFFFFF
@V300088128L1C001R0010000019#CTGATATAGA/1
GTGGATCACTTGGCTCGGGACTGATATAGA
+
F:FFFGF?FGGFFFFGFFEEFFFFFFFFFF
если ваши теги имеют переменный размер, вы можете использовать следующий вариант на основе кода, найденного здесь:
seqkit fx2tab text.fq | awk ' function str_repeat(s1, n1) {s2 = ""; for (n2 = 1; n2 <= n1; n2++) {s2 = s2 s1} return s2 }; {tag=$1; gsub(/(^.*#)|(\/1$)/,"", tag); print $1 "\t" $2 tag "\t" $3 str_repeat("F", length(tag)) }'
$ cat tst.awk
str != "" { $0 = $0 str "AGTCGGAGGC"; str="" }
match($0,"#.*/") { str = substr($0,RSTART+1,RLENGTH-2) }
{ print }
$ awk -f tst.awk file
@V300088128L1C001R0010000004#TCCTCGCATG/1
TTCAAGTAATCCAGGATAGGCTTCCTCGCATGAGTCGGAGGC
+
FFDFFFFFFFFGFFFFFFFFFF
@V300088128L1C001R0010000019#CTGATATAGA/1
GTGGATCACTTGGCTCGGGACTGATATAGAAGTCGGAGGC
+
F:FFFGF?FGGFFFFGFFEE
Используя GNU sed
с расширенным режимом регулярных выражений -E
, мы прикрепляем следующую строку к строке @, если она не последняя. Затем мы берем текст между #и /1, а также помещаем \n в регулярное выражение, чтобы убедиться, что оно находится в строке @, и прикрепляем его к концу пространства шаблона.
sed -Ee '
/@/{$!N;}
s|#(.*)/1.*\n.*|&\1AGTCGGAGGC|
' file