awkのデフォルトの区切り文字はスペースですが、タブ(tab)区切りのファイルを読み込むことも多々あるかと思います。
タブ区切りで読み込むには、2種類の設定方法があるのでそれぞれ紹介します。

スポンサーリンク

FS変数にタブ(tab)を設定

※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

スポンサーリンク