BEGINブロックに、OFS変数でタブ区切りを設定しよう
デフォルトでは、awkのprint出力はスペース区切りで出力されるようになっています。
OFS="\t"のように、OFS変数でタブ区切りに設定することで、タブ区切りの出力ができるようになります。
下記のようにBEGINブロックで、初期設定してしまうのが良いと思います。
BEGINブロック以降の処理で、設定が適用されることになります。
BEGIN {
OFS="\t" #タブ区切りの出力を設定している
}
print文にはカンマ区切りで変数を羅列
print文を書く時は、下記のように変数もしくは文字列を、カンマ区切りで羅列します。
カンマの部分がタブとなります。
print year , month , day #カンマ区切りで変数を羅列
サンプルコード
サンプルコードを下記に記載しましたので、参考にしてください。
スペース区切りとなっているin.txtを一行ずつ読み込んで、タブ区切りで出力し直しています。
$ cat in.txt
2017 1 1
2017 1 2
$ cat sample.awk
#!/bin/sh
cat in.txt | awk '
BEGIN {
OFS="\t" #タブ区切りの出力を設定している
}
{
year = $1
month = $2
day = $3
print year , month , day #カンマ区切りで変数を羅列
}
'
$ ./sample.awk
2017 1 1
2017 1 2
