Дан входной файл, который выглядит следующим образом:Regular Expression Issue - кот
>Scaffold1
AACTGTGCCTATTTGGGCATCCGTCAGGAAAATATTGTCGCCCTCGGTGCATAAACCCATCGGCTGACCAAAGGCTGCAAAGCTGCCAGAACCGTTCCTGTTTCCTTCTTCTCCGGTACCAGCAATGACTGTAACAGTGCCGTTTCTGTCAAGGTGCATTACTTGACGCCTTGTCTGGTCGGTGAAAGCTACTTTCCCGTCTGAAAGTGGGGCAACTGCCTGTATACCGGAACTTGCTTGCCCTGCATCAGCCATGGCGTACTCTTTCACCTCCTGATTTGTTATTTTGACTTTGGTGATGCCTTTGTTGTGTGCCATAACAAGATATCCATCGGTAGATAAGCACATGCTTCGAACCTTACCTCATAGCGGTGTAAAATCACAAAACTTAGTGACTGTT
>Scaffold2
CTTTATAGAGTTTATCGATATCATGGCCGTACAAAGAAGCGCTTAATTTCTAAGGTCATCTTAGAAGCTTCGTAAACACACATTAATGTTAATGAGCTTCCTCGCCTGACAGCATCCTCGCTGCAGGACCCAACAGTGGAGGGGAAGCGGCACAGACCTTGAGGTATGGGTGCGTATGGGTGCACAATGACCTAATACGTGAATATTGATCAAATTCTAAAAAGTTACCATGAATTGAGTGTTTATTCGTATAGGGTGTTTCCTCTCAAACACGGCACCGTTATAAAACAAACAATTTCAGTTCAAATAGTTAAAAAGC
>Scaffold3
TGTTGCTTTTTCTCCTTGGTGGATGCTGCAGTTACAGACTTTCTTTTCCGGCAACAATTTAAATAATGTTCTGTGGAAAAAACGACATGTAATTATTTTGATTCGAGGTCAAACGTTGACCCAGTATTTAGTCCAGTATGACTAATTATCAATACTTTAACAAATTTACGTCATTTCTTCATGCGTCTGTCCTGTTATTGTTCATGAATTTCGTCAAAACATTGTCCGCAGACTGCTTG
Я желаю вывода, который выглядит следующим образом:
Scaffold1 isogroup1
AACTGTGCCTATTTGGGCATCCGTCAGGAAAATATTGTCGCCCTCGGTGCATAAACCCATCGGCTGACCAAAGGCTGCAAAGCTGCCAGAACCGTTCCTGTTTCCTTCTTCTCCGGTACCAGCAATGACTGTAACAGTGCCGTTTCTGTCAAGGTGCATTACTTGACGCCTTGTCTGGTCGGTGAAAGCTACTTTCCCGTCTGAAAGTGGGGCAACTGCCTGTATACCGGAACTTGCTTG
Scaffold2 isogroup2
CTTTATAGAGTTTATCGATATCATGGCCGTACAAAGAAGCGCTTAATTTCTAAGGTCATCTTAGAAGCTTCGTAAACAACACATTAATGTTAATGAGCTTCCTCGCCTGACAGCATCCTCGCTGCAGGACCCAACAGTGGAGGGGAAGCGGCACAGACCTTGAGGTATGGGTGCGTATGGGTGCACAATGACCTAATACGTGAATATTGATCAAATTCTAAAAAGTTACCATGAATTGAGTGTTTATTCGTATAGGGTGTTTCCTCTCAAACACGGCACCGTTATAAAACAAACAATTTCAGTTCAAATAGTTAAAAAGC
Scaffold3 isogroup3
TGTTGCTTTTTCTCCTTGGTGGATGCTGCAGTTACAGACTTTCTTTTCCGGCAACAATTTAAATAATGTTCTGTGGAAAAAACGACATGTAATTATTTTGATTCGAGGTCAAACGTTGACCCAGTATTTAGTCCAGTATGACTAATTATCAATACTTTAACAAATTTACGTCATTTCTTCATGCGTCTGTCCTGTTATTGTTCATGAATTTCGTCAAAACATTGTCCGCAGACTGCTTG
Я не совсем, кажется, понять, регулярные чтобы сделать эту работу.
первый я попробовал:
cat test.fasta | perl -pe 's/>Scaffold(\.*).+/Scaffold$1$2\tisogroup$1/' >transcriptome_seq2iso.tab
Но это просто выводит:
Scaffold isogroup
AACTGTGCCTATTTGGGCATCCGTCAGGAAAATATTGTCGCCCTCGGTGCATAAACCCATCGGCTGACCAAAGGCTGCAAAGCTGCCAGAACCGTTCCTGTTTCCTTCTTCTCCGGTACCAGCAATGACTGTAACAGTGCCGTTTCTGTCAAGGTGCATTACTTGACGCCTTGTCTGGTCGGTGAAAGCTACTTTCCCGTCTGAAAGTGGGGCAACTGCCTGTATACCGGAACTTGCTTGCCCTGCATCAGCCATGGCGTACTCTTTCACCTCCTGATTTGTTATTTTGACTTTGGTGATGCCTTTGTTGTGTGCCATAA
Scaffold isogroup
CTTTATAGAGTTTATCGATATCATGGCCGTACAAAGAAGCGCTTAATTTCTAAGGTCATCTTAGAAGCTTCGTAAACACACATTAATGTTAATGAGCTTCCTCGCCTGACAGCATCCTCGCTGCAGGACCCAACAGTGGAGGGGAAGCGGCACAGACCTTGAGGTATGGGTGCGTATGGGTGCACAATGACCTAATACGTGAATATTGATCAAATTCTAAAAAGTTACCATGAATTGAGTGTTTATTCGTATAGGGTGTTTCCTCTCAAACACGGCACCGTTATAAAACAAACAATTTCAGTTCAAATAGTTAAAAAGC
Scaffold isogroup
TGTTGCTTTTTCTCCTTGGTGGATGCTGCAGTTACAGACTTTCTTTTCCGGCAACAATTTAAATAATGTTCTGTGGAAAAAACGACATGTAATTATTTTGATTCGAGGTCAAACGTTGACCCAGTATTTAGTCCAGTATGACTAATTATCAATACTTTAACAAATTTACGTCATTTCTTCATGCGTCTGTCCTGTTATTGTTCATGAATTTCGTCAAAACATTGTCCGCAGACTGCTTG
Далее я думал, что я мог бы использовать (\d+)
вместо (\.*)
в качестве символа \d
может использоваться вместо любой цифры от 0 до 9. Значение +
означает одно или несколько повторений. Однако вывод выглядит следующим образом:
>Scaffold1
AACTGTGCCTATTTGGGCATCCGTCAGGAAAATATTGTCGCCCTCGGTGCATAAACCCATCGGCTGACCAAAGGCTGCAAAGCTGCCAGAACCGTTCCTGTTTCCTTCTTCTCCGGTACCAGCAATGACTGTAACAGTGCCGTTTCTGTCAAGGTGCTTACTTGACGCCTTGTCTGGTCGGTGAAAGCTACTTTCCCGTCTGAAAGTGGGGCAACTGCCTGTATACCGGAACTTGCTG
>Scaffold2
CTTTATAGAGTTTATCGATATCATGGCCGTACAAAGAAGCGCTTAATTTCTAAGGTCATCTTAGAAGCTTCGTAAACACACATTAATGTTAATGAGCTTCCTCGCCTGACAGCATCCTCGCTGCAGGACCCAACAGTGGAGGGGAAGCGGCACAGACCTTGAGGTATGGGTGCGTATGGGTGCACAATGACCTAATACGTGAATATTGATCAAATTCTAAAAAGTTACCATGAATTGAGTGTTTATTCGTATAGGGTGTTTCCTCTCAAACACGGCACCGTTATAAAACAAACAATTTCAGTTCAAATAGTTAAAAAGC
>Scaffold3
TGTTGCTTTTTCTCCTTGGTGGATGCTGCAGTTACAGACTTTCTTTTCCGGCAACAATTTAAATAATGTTCTGTGGAAAAAACGACATGTAATTATTTTGATTCGAGGTCAAACGTTGACCCAGTATTTAGTCCAGTATGACTAATTATCAATACTTTAACAAATTTACGTCATTTCTTCATGCGTCTGTCCTGTTATTGTTCATGAATTTCGTCAAAACATTGTCCGCAGACTGCTTG
Может кто-нибудь предложить, почему это не работает и какова будет работа?
Большое спасибо Ikegami! Ваш ответ отлично работает. Чтобы просто быть понятным, '.. *)' Фиксирует как можно больше символов в таблице ASCII, следующей за «Scaffold». Мой _error_ включал '. +' После, если, как это работает, вроде ** вычитания **? –
'. +' Означает совпадение с одним или несколькими символами. Регулярное выражение недействительно, если оно не может, поэтому оно возвращается назад - берет один символ из загрузки, совпадающего с символом '. *', И позволяет '. +' Сопоставлять его. – Sobrique
Спасибо, что помогли мне понять это более подробно. Я очень ценю это. –