Linux 中如何将文本中连续的字段转换成一个字段显示

 

001、

[root@localhost test]# ls
a.txt
[root@localhost test]# cat a.txt             ## 测试文本
gene    mRNA    exon    exon    exon    exon    exon    exon    exon    CDS     CDS     CDS     CDS     exon     CDS
gene    gene    mRNA    exon    exon    aaaa    aaaa    exon    exon    exon    CDS     CDS     CDS     CDS     CDS     CDS
[root@localhost test]# awk '{printf("%s\t",$1); a=$1; for(i = 1; i <= NF; i++) {if($i==a){} else {printf("%s\t", $i)}; a=$i} printf("\n")}' a.txt       ## 将多个连续的重复字段以一个字段显示
gene    mRNA    exon    CDS     exon    CDS
gene    mRNA    exon    aaaa    exon    CDS

image

 。

 

002、只针对特定字段

[root@localhost test]# ls
a.txt
[root@localhost test]# cat a.txt          ## 测试文本
gene    mRNA    exon    exon    exon    exon    exon    exon    exon    CDS     CDS     CDS     CDS     exon     CDS
gene    gene    mRNA    exon    exon    aaaa    aaaa    exon    exon    exon    CDS     CDS     CDS     CDS     CDS     CDS
[root@localhost test]# awk 'BEGIN{key=0}{for(i = 1; i <= NF; i++) {if(key == 0 && $i == "exon") {printf("%s\t", $i); key++} else if($i != "exon"){printf("%s\t", $i)} }; key = 0; printf("\n")}' a.txt    ## 对exon进行去重复
gene    mRNA    exon    CDS     CDS     CDS     CDS     CDS
gene    gene    mRNA    exon    aaaa    aaaa    CDS     CDS     CDS     CDS     CDS     CDS

image

 。

 

posted @ 2025-12-12 22:51  小鲨鱼2018  阅读(1)  评论(0)    收藏  举报