OFS为什么不工作?

时间:2016-01-08 23:26:08

标签: awk

$ echo "a b c" | awk 'BEGIN {OFS=","}; {print $0};' -
a b c

我试图看看OFS是否适用于最后一个字段,所以期望输出为

a,b,c

a,b,c,

OFS的更改无效。为什么?

3 个答案:

答案 0 :(得分:6)

您应该更改/设置字段,以便重新计算$0,然后将应用OFS。 E.g。

echo "a b c" | awk 'BEGIN {OFS=","}; {$1=$1;print $0};'

答案 1 :(得分:2)

{print $ 1,$ 2,$ 3}将使用OFS值,无论是否更新任何字段。但这种解决方案不可移植。我希望其他更好的解决方案,如print $ WITH_OFS,可能是AWK的新功能。

答案 2 :(得分:1)

分配给OFS不会修改

$ 0。但是,当您分配给任何元素(包括任何不存在的字段)时,$ 0会被修改。

  回声" a b c" | awk' BEGIN {OFS =","}; {$ 4 ="&#34 ;; print $ 0};' -

给出:a,b,c,