awk の OFS は有効です (続き)

きむらさんが解説してくださっています。

ただし特別な動作として、フィールド変数やレコード変数($0ね)に変更を加えたときとか、特殊変数NFを操作したときに、フィールド変数を使ってのレコードの再構築が行われます。このときは、フィールドとフィールドの間にはFSではなくOFSが置かれて再構築されます(なぜそうなのかは考えてみましょう)。

解説しよう(awkの動作)

実際に実在しないフィールドに代入してみましょう。

$ echo 'a,b,c' | gawk -v FS=',' -v OFS='|' '{$4="d";print $0}'
a|b|c|d

ついでに再構成させてみましょう。

$ echo 'a,b,c' | gawk -v FS=',' -v OFS='|' '$1=$1'
a|b|c

以下のものでは再構成されません。

$ echo 'a,b,c' | gawk -v FS=',' -v OFS='|' '$0=$0'
a,b,c