0

我正在打印这样的列表(信息 [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

4 回答 4

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]
        }
    }
}
于 2013-10-08T14:50:07.777 回答
1

如果输入中有更多列,则可以说:

awk '{sub("[^0-9]*", "", $1)}1' inputfile
于 2013-10-08T14:52:49.170 回答
1

在 R 中,可以只使用:

 sub("^.+\\=", "", info)

不需要循环。使用 awk 的唯一原因是文件太大而无法放入内存。

于 2013-10-08T15:20:11.617 回答
0

使用awk

awk -F= '{print $2}' file
366
181
254
463
于 2013-10-08T14:52:09.397 回答