csvってcshでもできるんだぜ。

csv化のお話。
うちのチームではなぜかいろんなデータの検証のためにcsvを作るときに
皆perlを作ろうとするので、cshでもできるんだぜの例を一つ。

たいした話じゃないんですが、最近こんなcshスクリプトをよく書いています。

testdataというファイルが80バイト1レコードで
1~8バイトがユーザID,9~29バイトがパスワード、残りはただのスペースだったとします。
とりあえずコード。

#!/bin/csh -v
# 80バイト1レコードのNULL文字なしのファイルからcsv形式に変換
# 2011/01/17 watanabefg
#
setenv INFILE ~/testdata
setenv TMPFILE ~/testdata.fold
setenv OUTFILE ~/outfile
fold -80 $INFILE > $TMPFILE
foreach rec ( `cat $TMPFILE` )
    setenv USER_ID `echo $rec|cut -c1-8`
    setenv PASSWD  `echo $rec|cut -c9-29`
    echo $USER_ID,$PASSWD >> $OUTFILE
end

<ざっくり解説>
まず改行のために80バイトでfoldして、ファイルに吐きます。
それをcatしたものをforeachで1行ずつ処理します。
foreachのループの中では、ユーザIDとパスワードを取って、カンマ区切りで出力ファイルに吐いています。

やっぱりこっちの方がシンプルで好きだなぁ。
echoで吐く文字列を変えるだけで結構いろいろ応用が効きます。SQL作ったり、新しいデータ作ったり。
エラーのときの処理とか入れてないし、問題はあるのであくまで小手先のテクニックとしてお試しあれ。

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
何かぼんやりと勉強会をしたいなぁと思っています。
ネタ募集中です。
関西で開催する予定ですので、関西の方はお楽しみに!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

コメント

このブログの人気の投稿

perlのMIME::Liteならメール送信はすぐ書ける。その2

GAEでOAuthというかTwitter認証してみた。

Pray For Japanのまとめページつくりました。