- blogs:
- cles::blog
2009/02/06

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


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
- *1: Manpage of BASHのパラーメータの展開節を参照。
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2903
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(112095)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110738)
3 . 年次の人間ドックへ(110340)
4 . 2023 年分の確定申告完了!(1つめ)(109894)
5 . 三菱鉛筆がラミーを買収(109793)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110738)
3 . 年次の人間ドックへ(110340)
4 . 2023 年分の確定申告完了!(1つめ)(109894)
5 . 三菱鉛筆がラミーを買収(109793)
cles::blogについて
Referrers