タブ区切りでファイルを読み込む方法 - AWK
ファイル読み込み時の単語区切り規則を変更したい時は、変数FSを指定します。o 空のデータを読み飛ばしたくない場合、FS="[\t]"; のように、正規表現で書きます。
+ 文字列として指定します。正規表現の左右にある/は不要です。
+ 普通に FS="\t"; と書いても同じ動きをしますが、FS=" ";と書いた時に予想と異なる動きをしますので、気を付けます。
o 連続したタブを読み飛ばす場合、FS="[\t]+";
**** 例。空のデータを読み飛ばさない書き方
o テストデータ in.txt
--------
あいうえお かきくけこ さしすせそ
--------
最初の区切りをタブ1つ。次の区切りをタブ2つに置き換えます。
o プログラム a.awk
--------
BEGIN {
FS = "[\t]";
}
{
print "1行分 = " $0; # 「あいうえお かきくけこ さしすせそ」
print "1番目 = " $1; # 「あいうえお」が入ります。
print "2番目 = " $2; # かきくけこ
print "3番目 = " $3; # 何も入りません。(= 空データ)
print "4番目 = " $4; # さしすせそ
}
--------
+ 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
+ 出てくる単語の意味は、「FS = 読み込んだ行を列に分割する時の区切り文字」
+ 「RS = 1行読み込む時の改行文字」
+ 「print = ファイルなどに書き出す」
+ 「FIELDWIDTHS = 固定長ファイルを読み込む為の設定」
o 実行コマンド例
--------
gawk -f a.awk in.txt > out.txt
--------
==
関連ページ:
▼AWKの入出力関数とコマンド実行機能(▼ABC順)
▼AWKプログラムを書く(▼ABC順)
▼AWK
▼制作メモ
> AWKでバイナリ出力する(mawk, Gawk専用)
AWKでバイナリ入力する(Gawk専用)
> 文字列を組み立てる
プログラムの基本パターン
(2010年6月8日訂正。FS="\t"の時、データを読み飛ばさない)