awk中的打印和分离列
我有这样的文件(VCF)awk中的打印和分离列,awk,Awk,我有这样的文件(VCF) ##fileformat=VCFv4.0 ##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data"> ##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth"> ##FILTER=<ID=q10,Description="Qual
##fileformat=VCFv4.0
##INFO=<ID=NS,Number=1,Type=Integer,Description="Number of Samples With Data">
##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">
##FILTER=<ID=q10,Description="Quality below 10">
##FILTER=<ID=s50,Description="Less than 50% of samples have data">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
##FORMAT=<ID=GQ,Number=1,Type=Integer,Description="Genotype Quality">
##FORMAT=<ID=DP,Number=1,Type=Integer,Description="Read Depth">
##FORMAT=<ID=HQ,Number=2,Type=Integer,Description="Haplotype Quality">
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA00001
Chr02 259 . A . 20 . . GT:DP:A:C:G:T:PP:GQ 0/0:1:0,1:0,0:0,0:0,0:0,26,23,75,33,33,33,47,52,49:23
Chr02 260 . C . 13 . . GT:DP:A:C:G:T:PP:GQ 0/0:1:0,0:0,1:0,0:0,0:24,0,70,17,25,49,43,25,25,44:16
Chr02 261 . C . 13 . . GT:DP:A:C:G:T:PP:GQ 0/0:1:0,0:0,1:0,0:0,0:24,0,194,18,25,49,44,25,25,45:16
Chr02 262 . C A 21 . . GT:DP:A:C:G:T:PP:GQ 0/1:1:0,0:0,1:0,0:0,0:387,0,342,348,25,368,376,25,25,368:25
Chr02 263 . C . 24 . . GT:DP:A:C:G:T:PP:GQ 0/0:2:0,0:1,1:0,0:0,0:541,0,529,495,29,556,508,29,29,499:29
Chr02 264 . A . 31 . . GT:DP:A:C:G:T:PP:GQ 0/0:2:1,1:0,0:0,0:0,0:0,280,192,317,36,36,36,178,302,219:36
Chr02 265 . G C 25 . . GT:DP:A:C:G:T:PP:GQ 0/1:2:0,0:0,0:1,1:0,0:255,414,0,328,284,29,284,29,351,29:29
Chr02 266 . A . 31 . . GT:DP:A:C:G:T:PP:GQ 0/0:2:1,1:0,0:0,0:0,0:0,281,323,440,36,36,36,209,309,315:36
Chr02 267 . C . 24 . . GT:DP:A:C:G:T:PP:GQ 0/0:2:0,0:1,1:0,0:0,0:595,0,541,481,28,567,512,28,28,512:
Chr02:259-259
Chr02:260-260
Chr02:261-261
Chr02:262-262
Chr02:263-263
.
.
.
Chr02:267-267
我已在awk中尝试使用此命令
awk '{ OFS = ":" }{print$1,$2,$2}' input.txt
但它对我不起作用请您尝试以下内容,仅在GNU
awk
中使用显示的样本编写和测试
awk '/^Chr/{print $1":"$2"-"$2}' Input_file
或者,如果您想查找以Chr开头、后跟数字的行,请尝试以下操作
awk '/^Chr[0-9]+/{print $1":"$2"-"$2}' Input_file
或者,如果您只想留下注释行,请尝试以下操作:
awk '!/^#/{print $1":"$2"-"$2}' Input_file
说明:如果行从Chr(在第一种解决方案中)或Chr后跟数字(在第二种解决方案中)开始,或者行不是从
#
(第三种解决方案)开始,只需检查条件然后打印第一个字段冒号第二个字段破折号第二个字段。如果您不想打印以开头的行。
您可以使用awk'/^#/{print$1:“$2”-“$2}”input.txt
wrtprint first和second row
-这些是您正在打印的列(也称为字段),而不是行(也称为行或记录)。此外,“它对我不起作用”是最糟糕的问题描述,因为它没有提供任何信息来帮助您修复代码。就像当你把你的车带到一个机械师那里,你必须告诉我们它以什么方式不起作用,我们才能帮助你修复它-没有输出,错误输出,错误信息,其他什么?