我打印的是这样的列表(info [i]):
DP=366
DP=181
DP=254
DP=463
我想摆脱DP =并且最后只得到数字来处理R中的数据。
在awk中使用此脚本我获取了上一个列表:
substr($1,1,1) != "#"{
split ($8, info, ";");
num = asort(info);
for ( i=1; i<=num; i++) {
if (info[i] ~ "DP") {
print info[i]
}
}
}
我认为正则表达式会有所帮助,但不知道在awk中使用。提前谢谢!
答案 0 :(得分:1)
试试这个:(刚修改原始代码):
substr($1,1,1) != "#"{
split ($8, info, ";");
num = asort(info);
for ( i=1; i<=num; i++) {
if (info[i] ~ "DP") {
sub(/DP=/,"",info[i])
print info[i]
}
}
}
答案 1 :(得分:1)
如果输入中有更多列,您可以说:
awk '{sub("[^0-9]*", "", $1)}1' inputfile
答案 2 :(得分:1)
在R中,我可以使用:
sub("^.+\\=", "", info)
无需循环。只有使用awk的原因是文件太大而无法放入内存中。
答案 3 :(得分:0)
使用awk
awk -F= '{print $2}' file
366
181
254
463