修改awk中的文本文件

时间:2018-05-10 16:38:41

标签: awk

我有一个文本文件,如下面的小例子:

chr1    HAVANA  transcript  12010   13670   .   +   .   gene_id "ENSG00000223972.4"; transcript_id "ENST00000450305.2"; gene_type "pseudogene"; gene_status "KNOWN"; gene_name "DDX11L1"; tr
anscript_type "transcribed_unprocessed_pseudogene"; transcript_status "KNOWN"; transcript_name "DDX11L1-001"; level 2; ont "PGO:0000005"; ont "PGO:0000019"; havana_gene "OTTHUMG00000000961.2"; havana_tran
script "OTTHUMT00000002844.2";
chr2    HAVANA  exon    53  955 .   +   .   gene_id "ENSG00000223972.4"; transcript_id "ENST00000450305.2"; gene_type "pseudogene"; gene_status "KNOWN"; gene_name "DDX11L1"; transcript
_type "transcribed_unprocessed_pseudogene"; transcript_status "KNOWN"; transcript_name "DDX11L1-001"; exon_number 1; exon_id "ENSE00001948541.1"; level 2; ont "PGO:0000005"; ont "PGO:0000019"; havana_gene
 "OTTHUMG00000000961.2"; havana_transcript "OTTHUMT00000002844.2";

小例子的预期输出是:

chr1    HAVANA  transcript  11998   12060   .   +   .   gene_id "ENSG00000223972.4"; transcript_id "ENST00000450305.2"; gene_type "pseudogene"; gene_status "KNOWN"; gene_name "DDX11L1"; tr
anscript_type "transcribed_unprocessed_pseudogene"; transcript_status "KNOWN"; transcript_name "DDX11L1-001"; level 2; ont "PGO:0000005"; ont "PGO:0000019"; havana_gene "OTTHUMG00000000961.2"; havana_tran
script "OTTHUMT00000002844.2";
chr2    HAVANA  exon    41  103 .   +   .   gene_id "ENSG00000223972.4"; transcript_id "ENST00000450305.2"; gene_type "pseudogene"; gene_status "KNOWN"; gene_name "DDX11L1"; transcript
_type "transcribed_unprocessed_pseudogene"; transcript_status "KNOWN"; transcript_name "DDX11L1-001"; exon_number 1; exon_id "ENSE00001948541.1"; level 2; ont "PGO:0000005"; ont "PGO:0000019"; havana_gene
 "OTTHUMG00000000961.2"; havana_transcript "OTTHUMT00000002844.2";

在输入文件中,有不同的行。每行以chr开头。每行都有一些列,分隔符是tab或“;”。 我想从这个文件中创建一个新文件,其中仅在第4列和第5列中进行更改。事实上,新文件中的第4列将是((column 4 in original file)-12),新文件中的第5列将是{{ 1}}。输入文件和输出文件之间的唯一区别在于第4和第5列中的数字。 我尝试使用以下命令在((column 4 in original file)+50)中执行此操作:

awk

当我运行代码时,它会返回此错误:

awk 'BEGIN { FS="\t;" } {print  $1"\t"$2"\t"$3"\t"$4=$4-12"\t"$5=$4+50"\t"$6"\t"$7"\t"$8"\t"$9" "$10";"$11" "$12";"$13" "$14";"$15" "$16";"$17" "$18";"$19" "$20";"$21" "$22";"$23" "$24";"$25" "$26";"$27" "$28";"$29" "$30";"$31" "$32";"$33" "$34";"$35" "$36";"$37" "$38";" }' input.txt > test2.txt
你知道如何解决这个问题吗?我想获得一个与输入文件格式完全相同的输出文件。意思是相同的分隔符。

0 个答案:

没有答案