OFS为什么不工作?

Tim*_*Tim 5 awk

$ echo "a b c" | awk 'BEGIN {OFS=","}; {print $0};' -
a b c
Run Code Online (Sandbox Code Playgroud)

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

a,b,c
Run Code Online (Sandbox Code Playgroud)

要么

a,b,c,
Run Code Online (Sandbox Code Playgroud)

但改变OFS不起作用.为什么?

Ken*_*ent 7

您应该更改/设置一个字段,以便$0重新计算,然后OFS将应用.例如

echo "a b c" | awk 'BEGIN {OFS=","}; {$1=$1;print $0};'
Run Code Online (Sandbox Code Playgroud)

  • @MichaelBack 不,惯用的 awk 将是 `echo "ab c" | awk -v OFS=, '{$1=$1}1'` 所以即使它的第一个字段是空字符串或计算为零,也会打印该行。如果第一个字段是“0”而不是“a”,请尝试两种方法。 (2认同)