awkの-Fオプションは王道の基本オプションだと思います。
用途によって区切り文字を指定して、特定の列を抽出していくと思うのですが、そのサンプルコードをご紹介したいと思います。

スポンサーリンク

-Fオプションで区切り文字を"スペース"に指定する方法

※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-

awkのデフォルトの区切り文字はスペースなので、-Fオプションを指定する必要はありません。
例えば、下記のようにスペース区切りでファイルがあった場合

 $ cat in.txt 
20 45 awk
67 32 delimiter
78 56 row

下記のように-Fオプションをつけなくても、スペース区切りで分割されます。
 $ cat in.txt | awk '{print $3}' 

実行すると、下記のように3列目がprint出力されています。
 $ cat in.txt | awk '{print $3}' 
awk
delimiter
row

もちろん明示的にスペース区切りであることを残して、-Fオプションで指定するのもOKだと思います。
下記のように、-Fオプションでスペースを指定します。実行結果は先述の結果と同じになっているのが確認できます。
 $ cat in.txt | awk -F " " '{print $3}' 
awk
delimiter
row

スポンサーリンク

-Fオプションで区切り文字を"タブ(tab)"に指定する方法

タブ区切りにするには、-F "\t" を指定します。
例えば、下記のようにタブ区切りのファイルがあったとします。

 $ cat in2.txt 
20	45	awk
67	32	delimiter
78	56	trow

ワンライナーで、awkコマンドに-F "\t"でタブ区切りを指定して、2列目をprint出力しています。
 $ cat in2.txt | awk -F "\t" '{print $2}'
45
32
56

-Fオプションで区切り文字を"カンマ"に指定する方法-"csvファイル"を入力にする場合-

csvファイルなどカンマ区切りとなっている場合も、同じようにawkコマンドの-Fオプションでカンマを指定します。
下記のようにカンマ区切りのファイルがあった場合、

 $ cat in3.txt 
20,45,awk
67,32,delimiter
78,56,row

下記のように-Fオプションでカンマを指定します。
2列目がprint出力されているのが確認できます。
 $ cat in3.txt | awk -F "," '{print $2}'
45
32
56

スポンサーリンク

-Fオプションで区切り文字を"#"に指定する方法

#区切りの場合もサンプルコードをご紹介します。
下記のように#区切りのファイルがあったとします。

 $ cat in4.txt 
20#45#awk
67#32#delimiter
78#56#row

下記のように、-Fオプションで#を指定します。
今度は1列目をprint出力しています。
 $ cat in4.txt | awk -F "#" '{print $1}'
20
67
78

-Fオプションで区切り文字を"複数"指定する方法

awkで区切り文字が複数あった場合には、-F "[区切り文字]"と指定して、
[]で囲まれた区切り文字の部分に、区切り文字を羅列します。

例えば、カンマと#を区切り文字として下記のようなファイルがあったとします。

 $ cat in5.txt 
20,45#awk
56,32#delimiter
78,56#row

カンマと#の両方でファイルの列を分割するには、下記のように書きます。
 $ cat in5.txt |awk -F "[,#]" '{print $3}'

実行すると、3列目が抽出されてprint出力されているのが確認できます。
 $ cat in5.txt |awk -F "[,#]" '{print $3}'
awk
delimiter
row

動画で解説

YouTube始めました!動画で解説しています。

一連の流れを動画にしてみました。
コマンドの書き方や実行結果の動きが確認できます。
よければご参考にして頂けると幸いです。

スポンサーリンク