AWK打印bash变量不止一次

时间:2015-06-14 09:17:55

标签: bash variables command-line awk

我正在尝试使用一个使用bash变量的AWK one liner。问题是它被打印多次或发出错误。 bash变量看起来像这样(没有echo线):

echo "$time"
49.80
63.4
61
60.4
61

我试图使用的AWK专线是:

awk -v time="$time" -F, '{print $1,$2,$3,$4,$5=time}' file

输出是这样的:

SantaClara 6/7/2015 D 4 49.80
63.4
61
60.4
61
SantaClara 5/29/2015 D 5 49.80
63.4
61
60.4
61
SantaClara 5/21/2015 D 5 49.80
63.4
61
60.4
61
SantaClara 4/29/2015 D 5 49.80
63.4
61
60.4
61
SantaClara 4/22/2015 D 5 49.80
63.4
61
60.4
61

我正在寻找这个:

SantaClara 6/7/2015 D 4 49.80
SantaClara 5/29/2015 D 5 63.40
SantaClara 5/21/2015 D 5 61
SantaClara 4/29/2015 D 5 60.4
SantaClara 4/22/2015 D 5 61

我在AWK系列上有几种变体,只是出现了错误。我做错了什么?

2 个答案:

答案 0 :(得分:4)

改为使用paste

$ paste file <(echo "$time")

如果您需要特定的分隔符(选项卡是默认设置),请使用-d开关。

答案 1 :(得分:1)

如果您只想要一个awk解决方案:

awk -F= 'FNR==NR{a[++i]=$0;next} {print $0, a[FNR]}' <(echo "$time") file
SantaClara 6/7/2015 D 4 49.80
SantaClara 5/29/2015 D 5 63.4
SantaClara 5/21/2015 D 5 61
SantaClara 4/29/2015 D 5 60.4
SantaClara 4/22/2015 D 5 61