AWK只打印数组中字段的编号。 [R

时间:2013-10-08 14:45:49

标签: regex r awk

我打印的是这样的列表(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中使用。提前谢谢!

4 个答案:

答案 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