awkのデフォルトの区切り文字はスペースですが、タブ(tab)区切りのファイルを読み込むことも多々あるかと思います。
タブ区切りで読み込むには、2種類の設定方法があるのでそれぞれ紹介します。
スポンサーリンク
FS変数にタブ(tab)を設定
※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-
参考:awk入門-使い方まとめ一覧-
区切り文字の設定には、awkで用意されているFS変数に区切り文字を設定することで、読み込むファイルの区切り文字を指定できます。
下記のように書くことで、区切り文字をタブに設定できます。
FS = "\t"
サンプルコード
それではサンプルコードです。
下記のように、in.txtにはタブ区切りで2列の文字列があるとします。
$ cat in.txt
2016 4
2017 7
2018 9
そして、BEGINブロックでFS変数にタブを設定しています。
in.txtは全てのレコード(行)がタブ区切りなので、最初の実行時に設定して問題ないと思います。
$ cat sample.awk #!/bin/sh cat in.txt | awk ' BEGIN{ FS = "\t" } { print $1 "年" $2 "月" } '
実行すると、下記のように2行が取得でき、print出力できていることが確認できます。
$ ./sample.awk 2016年4月 2017年7月 2018年9月
スポンサーリンク
-Fオプションでタブ区切りを設定する
awkをワンライナーで書きたい時などは、-Fオプションで指定するのがコードがスッキリすると思います。
スポンサーリンク
サンプルコード
下記はワンライナーではありませんが、-Fオプションで指定した場合のサンプルコードになります。
タブ区切りのファイルin.txtを読み込んで、1フィールド(列)目と2フィールド(列)目の間に"/"を入れて、print出力しています。
$ awk -F "\t" '{print $1 "/" $2}' in.txt
下記が実行結果になります。タブ区切りのファイルを読み込んで、"/"を挟んで2行出力されているのが確認できます。
$ awk -F "\t" '{print $1 "/" $2}' in.txt 2016/4 2017/7 2018/9
スポンサーリンク