我正在尝试使用一个使用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系列上有几种变体,只是出现了错误。我做错了什么?
答案 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