2016-02-01 60 views
1

我有以下file如何用awk重複行?

var1 10 10,11,13 
var2 10 12,20,91 
var3 10 6,7 
var4 11 4 

我想在第三個字段中的所有號碼在不同的行,但我需要在前兩個領域保持一致:

var1 10 10 
var1 10 11 
var1 10 13 
var2 10 12 
var2 10 20 
var2 10 91 
var3 10 6 
var3 10 7 
var4 11 4 

我試着使用:

awk '{ split ($3, a, ","); print $1"\t"$2"\t"a[1]"\n"$1"\t"$2"\t"a[2]"\n"$1"\t"$2"\t"a[3] }' file | awk '{ if (length($3)>1) print $0 }' 

但是,這是非常低效的,這是繁瑣的編碼$1$2每次。如果有人可以請幫助我,這將不勝感激。請注意,答案不一定限於awk,這只是一種偏好,因爲我最熟悉它。

回答

3
#!/usr/bin/awk -f 
{ 
    n = split($3, t, ",") 
    for (i=0;++i<=n;){ 
     printf("%s\t%s\t%s\n", $1, $2, t[i]) 
    } 
} 
+2

應該是for(i = 1 ...) – karakfa