awk实现
001、awk实现,提取第一个scaffold
[root@PC1 test]# ls a.fa [root@PC1 test]# cat a.fa ## 测试数据 >chr1 aattcc gg >chr2 ttccggaa ggccttgg cc >chr3 aatt gg >chr4 ttccgg >chr5 aaccgg ttaa [root@PC1 test]# awk '/>/ {p = ($0 ~ "chr1")}p' a.fa ## 提取chr1 >chr1 aattcc gg
002、awk实现提取中间任一scaffild
[root@PC1 test]# ls a.fa [root@PC1 test]# cat a.fa ## 测试数据 >chr1 aattcc gg >chr2 ttccggaa ggccttgg cc >chr3 aatt gg >chr4 ttccgg >chr5 aaccgg ttaa [root@PC1 test]# awk '/>/ {p = ($0 ~ "chr3")}p' a.fa ## 提取chr3 >chr3 aatt gg
003、awk提取末尾scaffold
[root@PC1 test]# ls a.fa [root@PC1 test]# cat a.fa ## 测试数据 >chr1 aattcc gg >chr2 ttccggaa ggccttgg cc >chr3 aatt gg >chr4 ttccgg >chr5 aaccgg ttaa [root@PC1 test]# awk '/>/ {p = ($0 ~ /chr5/)}p' a.fa ## 提取chr5 >chr5 aaccgg ttaa
004、随机连续提取
[root@PC1 test]# ls a.fa scaffold.list [root@PC1 test]# cat scaffold.list ## scaffold列表 chr2 chr4 chr5 [root@PC1 test]# for i in $(cat scaffold.list ); do awk -v a=$i '/>/ {p = ($0 ~ a)}p' a.fa >> result.fa; done ## 利用循环提取 [root@PC1 test]# ls a.fa result.fa scaffold.list [root@PC1 test]# cat result.fa ## 提取结果 >chr2 ttccggaa ggccttgg cc >chr4 ttccgg >chr5 aaccgg ttaa
sed实现
001、提取第一个scaffold
[root@PC1 test]# ls a.fa [root@PC1 test]# cat a.fa ## 测试数据 >chr1 aattcc gg >chr2 ttccggaa ggccttgg cc >chr3 aatt gg >chr4 ttccgg >chr5 aaccgg ttaa [root@PC1 test]# sed -n '/>chr1/,/>/p' a.fa | sed '1b; />/d' ## 提取chr1 >chr1 aattcc gg
002、提取中间任一scaffold
[root@PC1 test]# ls a.fa [root@PC1 test]# cat a.fa ## 测试数据 >chr1 aattcc gg >chr2 ttccggaa ggccttgg cc >chr3 aatt gg >chr4 ttccgg >chr5 aaccgg ttaa [root@PC1 test]# sed -n '/>chr3/,/>/p' a.fa | sed '1b; />/d' ## 提取chr3 >chr3 aatt gg
003、提取末尾scaffold
[root@PC1 test]# ls a.fa [root@PC1 test]# cat a.fa ## 测试数据 >chr1 aattcc gg >chr2 ttccggaa ggccttgg cc >chr3 aatt gg >chr4 ttccgg >chr5 aaccgg ttaa [root@PC1 test]# sed -n '/>chr5/,/>/p' a.fa | sed '1b; />/d' ## 提取chr5 >chr5 aaccgg ttaa
004、多条scaffold 连续提取
[root@PC1 test]# ls a.fa scaffold.list [root@PC1 test]# cat scaffold.list ## scaffold列表 chr1 chr3 chr5 [root@PC1 test]# for i in $(cat scaffold.list ); do sed -n "/>$i/,/>/p" a.fa | sed '1b; />/d' >> result.fa; done ## 利用循环结构连续提取 [root@PC1 test]# ls a.fa result.fa scaffold.list [root@PC1 test]# cat result.fa ## 提取结果 >chr1 aattcc gg >chr3 aatt gg >chr5 aaccgg ttaa
标签:##,scaffold,PC1,gg,fa,awk,linux,test,root From: https://www.cnblogs.com/liujiaxin2018/p/17072949.html