awkのOFS変数の設定で、出力の区切り文字を設定することができます。
下記に書き方を紹介します。
awkのOFS変数の使い方
awkの出力の区切り文字を統一するのであれば、下記のようにBEGINブロックで、OFS変数を設定するのが良いと思います。
BEGIN{ OFS = 区切り文字 }
出力の区切り文字をスペースにする場合
awkの出力区切り文字をスペースにする場合は、OFS = " " を設定します。
例えば、下記のようにin.txtがあったとします。
$ cat in.txt 2018 44 2019 76 2019 98
下記がサンプルコードになります。
カンマ区切りで、$1と$2をprint出力しています。
$ cat sample01.awk #!/bin/sh cat in.txt | awk ' BEGIN{ OFS = " " } { print $1 , $2 } '
実行すると、下記のようにスペース区切りで出力されているのが確認できます。
$ ./sample01.awk 2018 44 2019 76 2019 98
出力の区切り文字をカンマにする場合
awkの出力区切り文字をカンマにする場合は、ofs = "," を設定します。
$ cat sample02.awk #!/bin/sh cat in.txt | awk ' BEGIN{ OFS = "," } { print $1 , $2 } '
実行すると、下記のようにカンマ区切りで出力されているのが確認できます。
$ ./sample02.awk 2018,44 2019,76 2019,98
出力の区切り文字をタブにする場合
awkの出力区切り文字をタブにする場合は、OFS = "\t" を設定します。
$ cat sample03.awk #!/bin/sh cat in.txt | awk ' BEGIN{ OFS = "\t" } { print $1 , $2 } '
実行すると、下記のようにタブ区切りで出力されているのが確認できます。
$ ./sample03.awk 2018 44 2019 76 2019 98