csvってcshでもできるんだぜ。
csv化のお話。
うちのチームではなぜかいろんなデータの検証のためにcsvを作るときに
皆perlを作ろうとするので、cshでもできるんだぜの例を一つ。
たいした話じゃないんですが、最近こんなcshスクリプトをよく書いています。
testdataというファイルが80バイト1レコードで
1~8バイトがユーザID,9~29バイトがパスワード、残りはただのスペースだったとします。
とりあえずコード。
<ざっくり解説>
まず改行のために80バイトでfoldして、ファイルに吐きます。
それをcatしたものをforeachで1行ずつ処理します。
foreachのループの中では、ユーザIDとパスワードを取って、カンマ区切りで出力ファイルに吐いています。
やっぱりこっちの方がシンプルで好きだなぁ。
echoで吐く文字列を変えるだけで結構いろいろ応用が効きます。SQL作ったり、新しいデータ作ったり。
エラーのときの処理とか入れてないし、問題はあるのであくまで小手先のテクニックとしてお試しあれ。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
何かぼんやりと勉強会をしたいなぁと思っています。
ネタ募集中です。
関西で開催する予定ですので、関西の方はお楽しみに!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
うちのチームではなぜかいろんなデータの検証のために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作ったり、新しいデータ作ったり。
エラーのときの処理とか入れてないし、問題はあるのであくまで小手先のテクニックとしてお試しあれ。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
何かぼんやりと勉強会をしたいなぁと思っています。
ネタ募集中です。
関西で開催する予定ですので、関西の方はお楽しみに!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
コメント
コメントを投稿