データファイルの内の一部を解析したい
そんなときのお話。
ls
とすると、ファイルがズラッと並ぶ。
例えばこんな感じになるかも知れない。
xx000015 xx000103 xx000219 xx000340 xx000476 xx000610 xx000741 xx000873 xx000030 xx000136 xx000247 xx000374 xx000510 xx000643 xx000774 xx000907 xx000048 xx000166 xx000277 xx000408 xx000544 xx000676 xx000807 xx000940 xx000074 xx000193 xx000307 xx000443 xx000577 xx000709 xx000840 xx000975
一応数字はデータの順序を表しているけど、いつもこの値で出力されるわけじゃない。値の大小だけが問題である。
また、出力ファイル数もまちまちだとする。
そんなとき、いくつかのファイルを選んで解析することは、細かい流れではなく大まかな流れを把握するのによいだろう。
そんなときのためのまとめ。
script @ perlをこんな風に書く。
気持ちは
・~$noutの数だけ解析する
・最後のファイルは絶対に解析する。
my $nout = 9; my $nfile = `ls | wc -w`; open ( INFILE, "ls |"); my @files = <INFILE>; close (INFILE); my $i = 0; my $offset = $nfile % 9; my $pstep = int ( $nfile / $nout ); foreach $files (@files) { $i++; if ( ( $i - $offset ) % $pstep == 0) { $j++; ##解析スクリプト## chomp $files; print "$files \n"; ##ここまで## } }
ポイント
ファイルの総数のチェック
ls | wc -w
とても便利。
ファイルネームをscript内の変数にする
open (FILE,"ls |"); @filename = <FILE>; close (FILE);
によって実装することができる。
パイプを入れてあげるのがポイント。
他にも
@filename = `ls`;
で実装できる。