スポンサーリンク
FS変数で","区切りのファイルを処理
※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-
参考:awk入門-使い方まとめ一覧-
スクリプトを書くときなどは、FS変数で区切り文字を設定すると見易くなりますね。
※MACターミナル(BSD系)での動作確認です。
BEGINブロックで、FS変数の設定をすると良いかと思います。
参考:awkで変数の初期化はBEGINブロック内が基本
例えば、下記のin.txtがあったとします。
$ cat in.txt c11,c12,c13 c21,c22,c23 c31,c32,c33
下記がサンプルコードになります。
FS変数に、","を設定しています。
$ cat sample.awk #!/bin/sh cat in.txt | awk ' BEGIN{ FS = "," } { print $1 } '
下記が実行結果になります。
in.txtの1列目をprint出力しています。
$ ./sample.awk c11 c21 c31
スポンサーリンク
FS変数でタブ区切りのファイルを処理
次は、タブ区切りのファイルを処理してみます。
例えば、下記のin.txt(タブ区切り)があったとします。
$ cat in.txt c11 c12 c13 c21 c22 c23 c31 c32 c33
下記がサンプルコードになります。
FS変数に、"\t"を設定しています。
$ cat sample.awk #!/bin/sh cat in.txt | awk ' BEGIN{ FS = "\t" } { print $2 } '
下記が実行結果になります。
in.txtの2列目をprint出力しています。
$ ./sample.awk c12 c22 c32
FS変数で複数の区切り文字を設定
FS変数で複数の区切り文字を設定する場合には、"[区切り文字A区切り文字B区切り文字C]"の形式で、区切り文字を複数記述します。
例えば、","と"\t"を区切り文字に設定したい場合には、下記のようにFS変数を設定します。
FS = "[,\t]"
例えば、下記のin.txtがあったとします。
$ cat in.txt c11,c12 c13 c21,c22 c23 c31,c32 c33
下記がサンプルコードになります。
$ cat sample.awk #!/bin/sh cat in.txt | awk ' BEGIN{ FS = "[,\t]" } { print $3 } '
下記が実行結果になります。
$ ./sample.awk c13 c23 c33
awkのFS変数のデフォルトはスペース
awkのFS変数のデフォルトはスペースが設定されています。
実際にFS変数の中身を出力させてみます。
$ echo hello | awk '{print "FS変数のデフォルトは" FS "です"}' FS変数のデフォルトは です
スポンサーリンク