2016-02-01 4 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

Смежные вопросы