grep desc -A 1 /etc/rc.d/init.d/network
# description: Activates/Deactivates all network interfaces configured to \
# start at boot time.
DHCP и т. д.
Я сделаю следующие предположения:
Во всех ваших записях ровно 4 строки. Это не , требуемое форматом fastq, но часто имеет место при чтении коротких -данных.
Ваш штрих-код всегда является последней строкой букв после последней :
в каждой 4-й строке, начиная с первой.
Если эти предположения верны, вы можете сделать:
awk -F':' 'NR % 4 == 1 {seq=$NF}
NR % 4 == 2 { $0=$0 seq}1' R1test.fq > R1test_new.fq
Это похоже на ту же идею, что и ваш код, я просто удалил некоторые ненужные шаги и исправил некоторые проблемы. 1
в конце является сокращением awk для «напечатать эту строку».
Ваш код не работал, потому что вы не можете использовать -F
для установки разделителя полей внутри вашего кода awk
, -F
является опцией двоичного файла awk
, а не функцией awk язык. Чтобы изменить разделитель полей в сценариях awk, вы должны использовать переменную FS
(, например.BEGIN{FS=":"}
). Далее, даже если бы вам удалось изменить разделитель полей, это было бы неважно, поскольку строка разбивается до выполнения любого кода. Вы можете установить разделитель только в блоке BEGIN{}
. Если вы установите его в другом месте,вам также нужно сообщить awk, чтобы он перепарсил строку. И вообще, вы хотели :
в качестве разделителя полей, а не ;
.
Внимание:
Это, скорее всего, нарушит любую последующую обработку, которую вы хотите выполнить, поскольку длина последовательности не будет соответствовать длине показателей качества phred. Вы действительно уверены, что это хорошая идея?
Одним из способов выполнения требований к файлу fasta является использование потокового редактора GNU sed.
Здесь sed просматривает строку, начинающуюся с @, и добавляет к ней следующую строку. Затем к добавленной строке добавляются последние 12 символов строки @.
sed -Ee '
/^@/N
s/(.{12})\n.*/&\1/
' R1test.fq > R1test_new.fq