我有以下file
:
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
,这只是一个偏好,因为我最熟悉它。
答案 0 :(得分: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])
}
}