このエントリーをはてなブックマークに追加

逆引きシェルスクリプト


awkの出力をカンマ区切りにする方法

awkを使って、取得したデータをカンマ区切りで出力する方法を以下に記します。


OFSにカンマを設定する

OFSにカンマを設定することにより出力がカンマ区切りになります。
(printfによるカンマ区切り出力もできますが、この資料ではOFSを設定してカンマ区切りの出力をします)

実行例:スペース区切りのファイル

以下のファイルの1番めと3番めをawkで取得しカンマ区切りで出力する実行例を以下に記します。

$ cat date.txt 
1 Sunday 日曜日 星期天
2 Monday 月曜日 星期一
3 Tuesday 火曜日 星期二
4 Wednesday 水曜日 星期三
5 Thursday 木曜日 星期四
6 Friday 金曜日 星期五
7 Saturday 土曜日 星期六
  • 実行結果 vオプションを使用しOFSにカンマを指定することにより出力がカンマ区切りになります。
    $ awk -v OFS=, '{ print $1,$3 }' date.txt 
    1,日曜日
    2,月曜日
    3,火曜日
    4,水曜日
    5,木曜日
    6,金曜日
    7,土曜日
  • BEGINを使った場合 以下の記述でも同様の動作になります。
    awk 'BEGIN { OFS="," } { print $1,$3 }' date.txt
    printfを使う場合は以下のようになります。
    awk '{ printf("%s,%s\n",$1,$3) }' date.txt

実行例:カンマ区切りのファイル(CSVファイル)

以下のファイルの1番めと4番めをawkで取得しカンマ区切りで出力する実行例を以下に記します。

$ cat date.csv 
1,Sunday,日曜日,星期天
2,Monday,月曜日,星期一
3,Tuesday,火曜日,星期二
4,Wednesday,水曜日,星期三
5,Thursday,木曜日,星期四
6,Friday,金曜日,星期五
7,Saturday,土曜日,星期六
  • 実行結果
    $ awk -F , -v OFS=, '{ print $1,$4 }' date.csv 
    1,星期天
    2,星期一
    3,星期二
    4,星期三
    5,星期四
    6,星期五
    7,星期六

関連記事



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:27:08