ablog

不器用で落着きのない技術者のメモ

データを増幅したときの Perl ワンライナー

ほんとうにただのメモ。
bash + perl ワンライナーでデータファイルを 10 倍に増幅した。

$ cp -p data.cgi data_org.cgi 
$ wc -l data.cgi 
   20763 data.cgi
$ cp data.cgi data_new.cgi
$ for i in {1..9}
do
export n=`perl -lanF',' -e '$a=$F[0] if $a<$F[0];END{print $a}' data_new.cgi`
perl -ple 'BEGIN{($a,$b)=split(/-/,$ENV{n})};if($b>=999){$a++;$b=0}else{$b++};$c=sprintf("%05d-%03d",$a,$b);s/^[0-9\-]+/$c/' data.cgi > data_tmp1.cgi
cat data_new.cgi data_tmp1.cgi > data_tmp2.cgi
mv data_tmp2.cgi data_new.cgi
done
$ wc -l data_new.cgi 
  207630 data_new.cgi
$ perl -MList::Util=min,max -lanF',' -e 'push(@a,$F[0]); END{print min(@a);}' data_new.cgi 
00001-01
$ perl -MList::Util=min,max -lanF',' -e 'push(@a,$F[0]); END{print max(@a);}' data_new.cgi 
75690-763