...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

データ解析

実験データを解析中です.
今回は,ミスをなくすためと,後で楽をするために,なるべく作業を自動化しています.
下のD言語での標準入力周りの問題もその過程でぶつかった壁の一つなのです.

今回の作業でいろいろと扱えるようになりました.

・バッチファイル: 複数パラメータの扱い方などいろいろ
gawk: レコードの並び替え
・join: レコードの結合
sed: 出力の整形など

また,コマンドラインでの作業を楽にするために,とっても簡単な2つのプログラムを自作しました.
すごく適当な仕様なので用途が限定されまくりです.
cuthead は行数を指定できるようにしたらいいでしょう.
まあ,現状でも type textfile.txt | cuthead | cuthead | cuthead ・・・と繰り返せば好きなだけカットできますが.
compose はもっとちゃんと考え直したらかなり便利なコマンドになるでしょう.
Windows ではバッククォートが使えないのでね.

それぞれがどんなものかは続きをどうぞ,と.

  • compose

compose "command $stdin"
$stdin の部分を,標準入力で受け取った1行の文字列 inputline に置換し, command inputline を実行してくれます.
標準入力が複数行の場合には,各行に対して同じことが行われます.
$stdin は一度に何回出現してもすべて置換されます.
動作例:

$ dir /s/b/n | grep log.*txt
C:\desktop\log_a.txt
C:\desktop\log_b.txt
C:\desktop\log_c.txt
 
$ dir /s/b/n | grep log.*txt | compose "echo $stdin"
echo C:\desktop\log_a.txt
C:\desktop\log_a.txt
echo C:\desktop\log_b.txt
C:\desktop\log_b.txt
echo C:\desktop\log_c.txt
C:\desktop\log_c.txt
  • cuthead

標準入力の最初の1行だけをカットし,2行目以降を標準出力に書き出します.
テキストデータのヘッダだけを除去するために使用できます.
動作例:

$ type textfile.txt
user age id
haru 25 1
r.t. 25 2
 
$ type textfile.txt | cuthead
haru 25 1
r.t. 25 2