我有一个这样的DNA文件,其中序列说明在>符号之后的行中,该序列在下一行中进行直到下一个序列描述符>。我想提取一个特定的序列(序列描述行+序列),而不保留下一个标识符行。
文件:
>k141_166416 flag=1 multi=2.0000 len=644
AAATAGTAAAACTCCAGAAGATGAATAATAAAAATCAGTCTCTAATATCTCATTTAATTGATCAGAAAAAATATTATTATAATCTAAATTTATTCTAGTATTTTTTAAAAATTGATTACTTAAGTCAAATTTAAAATAATCAACGATAATTCCTTTCTTCTCTTTCAAGTCAAAAGAAAAATCTCTATCAATATACTCTGAAGGATAAATTGTATAAAAATTCACAGACCAACCTTTAAAACATCTTATTTCAAAGTAGTACTTCTAAACAAGCATCTAGAGATACTACTTATTTTTGAATATTACTTACACTTTAACCATAAAAAAATTCTATAAAATACTCTATATCTAACAATACTTTTTCATTTATAAGAATTTTCTTTAACTCTTCTAAAAAACCTGTTTTATACCCTCCATTTTCACCTCTAGGGTTAGAGTCATATAGGTCAATAATTAAATTCTGCACAATATTAATTTGCGAAAAAAATCAAATAAATTTTTAGCAATGATATGTAATTCATCGCCTGAAATACATGCTCCTATCTCGCCACTATTATGATTAATGTATACGACATTTACATCATGCTGTGTTAAGAATACTGTAGTACTTTCCCCATCAAATATATCTTCAAACATATATTGAA
>k141_41604 flag=1 multi=2.0000 len=319
GGGCTCGTAGCCCATGGCCGGCTGCGTCAGGATGCGGCGCAGCTGCGCCATCACGCCCTGTGCTCGCTGGCGCGCGCGCATGAGCGGCCCGGTCAGGGGACCGCCGGCGGGCAGGTACATGCCGCCGCCCATGAATGACGCCGGCTGGCTGACGCGGCTGACCAGCTGCGTCGGCACGAAGCCGGCCTGGCGCGGCGCGCCGCTGTGGGAAAAACCGTAGCCGCTCGCAGGCGACCCCATGGGCCTGGAGGCGGGGCCGAGCGGCCCCGAGAGCGAGCCGGGGCCGGTGCCGTAGGGGCCCGATGCGTCCGGCCCCAGG
>k141_436839 flag=0 multi=1.0000 len=205
ATGAAATCACGATGTTTTTCTGATTCTACGAGTTAGGGAGAACATGAATCATCAGCTCTTTTTTAAATCTGGTGTTTGTCTGAGCCGGGAACCTCAGTTCTCAAAGGGCAGTTTTGCCATTGCGAGAATAGGCCATTTGAGCAATTGCGGTAATAGGCCGTTTCGGCCAAATTTCTTCTTGGTGTCACTCTTCAGGAAAAGAGAG
>k141_624048 flag=1 multi=3.0000 len=318
GTGCATAATCGCGGTATGGTGAAGGCCCGCTTCGACTTTTAGCGCCAACGCCAGCGCGCTATCAAAATCGCTGACTTTCACAATGGGCAGCATGGGCATCAGTTGTTCACACGTGACCCACGGATCTTCGGCATTCACCACCGCGATGAGCAGGCGAGGCGTTTTTGCCGGTGTTGCGATGTCTGATGCTTCCAGTAGCGTCGCCGGGCTCTTACCCACCAGTTTTTTATTCGCATGACCATCCTGTAGACAGACGGTACGTAATTTATCGGTGTCCGACGGGCTGAGAAGCAGCGCGCCAAACGCTTGCATCTGCTG
>k141_395237 flag=1 multi=4.0000 len=344
GCATACAATGGTGAGACTATGGTGGATCGACTAGATTGGGACAATGGTTTACTCGAAGGAACGGAAGTTTTAGGGCTGTTGAACTCGGCTCAAATTGTAGATATTCCATTTAAACCAAATGGACAATACGACCGAATTTCGATTGGACTGAAAAGCTTAATCCATGCGGATGTACTTTCGGCTATTGAAATCTACAAAGTAGAACGCGTATGTGATCTAATAGGATCTAACCAAAATTTAGTGTCGTGGAAGTCGTACAAAGTAAATGACGATGCTACTGTTACTTCGGTTTCAGGTGGTGAACAAGTGGAATATACCATCCATGTGAAAAATATAGGAACCAC
说我想将序列标识为>k141_436839
,这样输出文件是:
>k141_436839 flag=0 multi=1.0000 len=205
ATGAAATCACGATGTTTTTCTGATTCTACGAGTTAGGGAGAACATGAATCATCAGCTCTTTTTTAAATCTGGTGTTTGTCTGAGCCGGGAACCTCAGTTCTCAAAGGGCAGTTTTGCCATTGCGAGAATAGGCCATTTGAGCAATTGCGGTAATAGGCCGTTTCGGCCAAATTTCTTCTTGGTGTCACTCTTCAGGAAAAGAGAG
关于类似问题的帖子暗示了这一点,但没有用:sed -n -e '/^>k141_436839 $/,/^>$/{ /^>$/d; p; }'
len=
的长度也很重要。这是一个答案:
awk '/^>/{f=/>k141_436839 flag=0 multi=1.0000 len=205/} f' file
答案 0 :(得分:1)
>
请注意,无论每行"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"lint:css": "stylelint src/**/*.js",
"flow": "flow",
"precommit": "lint-staged"
},
"husky": {
"hooks": {
"pre-commit": "yarn precommit"
}
},
之间有多少行,以上内容都会打印整个记录,并且可以在任何UNIX盒的任何shell中的任何awk上使用。
答案 1 :(得分:1)
看起来很简单:
sed -n '/^>k141_436839 /{N;p;}'
答案 2 :(得分:1)
请您尝试以下。
awk -v value=">k141_436839" '/^>/{found=""} $1==value{print;found=1;next} found{print}' Input_file
我在这里创建了一个名为value
的变量,其值与字符串匹配,因此您可以根据需要进行更改,然后代码将查找该字符串。
答案 3 :(得分:1)
如果d
文件中的数据,请尝试使用gnu bash并sed,
在控制台上或放入bash脚本文件中:
id=k141_436839
sed -En "/^>$id/{N;p;q}" d
添加-i选项可将结果返回到数据d