2013-10-08 42 views
0

我印像這樣的列表(信息[1]):AWK僅打印數組中某個字段的編號。 [R

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使用。提前致謝!

回答

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] 
     } 
    } 
} 
0

使用awk

awk -F= '{print $2}' file 
366 
181 
254 
463 
1

如果您在輸入更多的欄目,你可以說:

awk '{sub("[^0-9]*", "", $1)}1' inputfile 
1

在R中可以使用:

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

無需循環。只有使用awk的原因是如果文件太大而不適合內存。