如何在bash中参与文件txt的一部分

时间:2017-03-23 16:21:19

标签: bash shell

我有一个以此结尾的file.txt:

HGVSp : HGVS protein sequence name

HGVS_OFFSET : Indicates by how many bases the HGVS notations for this variant 
have been shifted

Uploaded_variation     Location        Allele  Gene    Feature Feature_type    Consequence     cDNA_position   CDS_position    Protein_positi
CYP2C9:c.121A>G 10:96698560     G       ENSG00000138109 ENST00000260682 Transcript      missense_variant        133     121     41      N/D
CYP2C9:c.121A>G 10:96698560     G       ENSG00000233377 ENST00000424125 Transcript      downstream_gene_variant -       -       -       -
CYP2C9:c.121A>G 10:96698560     G       ENSG00000138109 ENST00000461906 Transcript      non_coding_transcript_exon_variant,non_coding_transcri
CYP2C9:c.121A>G 10:96698560     G       ENSG00000138109 ENST00000473496 Transcript      upstream_gene_variant   -       -       -       -

我想要一个像这样的新file1.txt:

chr10 (tab) 96698560 (tab) CYP2C9:c.121A>G

chr10是> g之后和':'之前的数字,而96698560是':'之后的数字

这样:

chr10      96698560       CYP2C9:c.121A>G

我该怎么做?

2 个答案:

答案 0 :(得分:0)

这可能不是完美的解决方案,但希望这会有所帮助。

{{1}}

答案 1 :(得分:0)

这是在awk中执行此操作的另一种方式:

awk -F"[ :]" 'printnext==1{print "chr"$3"\011"$4"\011"$1":"$2; printnext=0}$1=="Uploaded_variation"{printnext=1}' <yourfile>

这会将每个记录用空格或冒号分成多个字段。我们测试第一个字段的每个记录等于“Uploaded_variation”如果我们得到一个命中我们将变量“printnext”设置为1.如果printnext为“1”,那么我们以您描述的格式打印出记录并将printnext设置回0.