BLOGTIMES
2009/02/06

変数展開で簡単なcsvを処理する

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

bashにはいろいろな変数展開*1が用意されているので、移植性を考慮しなくてもいい状況であればこれらを使うとかなり便利なことができます。

$ cat test test,hoge foo,bar aaa,bbb,ccc

たとえば上記のようなcsvファイルがあって、それを処理するような場合にはcutやawkを使ってフィールドを切り出さなければなりませんが、bashの変数展開の${paramete%%word}${parameter#word}やを使えばそれらを使わずに済ますことができます。

スクリプトの実例

csvの一番初めのフィールドとそれ以外のフィールドに分けて出力する例です。値自体にセパレータが含まれているような複雑なcsvの処理はできませんが、スクリプトの設定ファイルを読み込むぐらいであれば十分実用的です。

#!/bin/bash cat test | while read line ; do echo $line echo ${line%%,*} # ここが初めのフィールド echo ${line#*,} # ここが2番目以降のフィールド done

スクリプトの実行結果

$ bash test.sh test,hoge test hoge foo,bar foo bar aaa,bbb,ccc aaa bbb,ccc

トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2903
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン