SmallStyle


2005-03-28

_ 歓迎会

今年も新人さんを迎える時期になってきたわけですが,どういうわけか私が新人の歓迎会の幹事をやることに….入社3年目にしてはじめての幹事か.というわけで普段出席率の悪いうちの部署だから,新人含めて20人集まればいいほうかなぁ,とか思ってたら予想に反して30人も出席とは….そんな大人数で会場予約してないし….ひとまず店に30人でいけるか確認.ぎりぎりですねぇなんていわれながらもなんとか会場を確保.つくずくこういう仕事はむいてないなぁと思ったのでありました.


2005-03-27

_ lftpでミラーリング

自宅サーバのtDiaryのデータをxreaのサーバにバックアップとしてミラーリングするのに,ftpを使ったバッチ処理にしようとしたのですが,少し調べてみたらlftpという便利なCUIのftpクライアントがあることを知りました.

コマンドラインでftpを利用する際,意外に不便なのがTab補完がきかないことです.lftpでは普通にシェルで利用しているTab補完が利用できます.これは結構便利です.それ以外にもタイムスタンプの新しいものだけ更新とか,正規表現で対象のファイルを指定できるなど機能が豊富です.Landscapeでlftpについて紹介されているので参考になりました.


2005-03-25

_ whileとawk

あるテキストファイルの各行末にタイムスタンプをシェルスクリプトで付加したいのだがどうしたらいい?という質問を受けて単純にwhile文を作成してみたら1000件処理するのに11秒もかかっていたので,これはまずいと少し調べてみました.シェルスクリプトでのテキスト処理としてはsedやawkが定番です.今回はこの要望をawkを使って実現してみました.

まずとっても遅いwhile版のソースは以下のようになります.

#/bin/sh
while read LINE
do
   echo $LINE `date +%Y-%m-%d-%H.%M.%S`
done < hoge.txt

このスクリプトで1000行のファイルを読み込み,行末にタイムスタンプを付加したときの実行時間は,

$ time while.sh
real    0m11.78s
user    0m2.33s
sys     0m7.56s

次にawkを使って同様の出力結果を表示する場合は,

awk '{cmd="date +%Y-%m-%d.%H%M.%S";cmd|getline d; print $0,d}' hoge.txt

このスクリプトで1000行のファイルを読み込み,行末にタイムスタンプを付加したときの実行時間は,

time awk '{cmd="date +%Y-%m-%d.%H%M.%S";cmd|getline d; print $0,d}' hoge.txt
real    0m0.19s
user    0m0.03s
sys     0m0.13s

明らかに実行時間に差があることがわかりました.10000件処理してもawkの場合は1秒程度ですんだので,これは大きな差です.ただ問題はタイムスタンプが全て同じになってしまうということ.この辺をどういう風に処理したらいいのかなぁ…


about me

いろいろと興味を持ったことを書いてます.ちょっとしたことは hb(@smallstyle) on Twitter で書いてます.

Archive

2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|12|