こういう入力から
,1,1,1,1,1,1,1,1,1
2,2,2,2,2,2,2,2,2,2
20,20,20,20,20,20,20,20,20,20
999,999,999,999,999,999,999,999,999,999
3333,3333,3333,3333,3333,3333,3333,3333,3333,3333
55555,55555,55555,55555,55555,55555,55555,55555,55555,55555
こういう結果が得られれば良いということですか?
0001,0001,0001,0001,0001,0001,0001,0001,0001,0001
0002,0002,0002,0002,0002,0002,0002,0002,0002,0002
0020,0020,0020,0020,0020,0020,0020,0020,0020,0020
0999,0999,0999,0999,0999,0999,0999,0999,0999,0999
3333,3333,3333,3333,3333,3333,3333,3333,3333,3333
55555,55555,55555,55555,55555,55555,55555,55555,55555,55555
スクリプト言語使えば楽できるかと。
どれでもお好きなものをどうぞ。
awk版
BEGIN {
FS=OFS=","
}
{
for (i=1; i<NF; i++) {
printf("%04d,", $i)
}
printf("%04d\n", $NF)
}
Perl版
use strict;
while (my $line = <>) {
my @fields = split /,/, $line;
print
join(q{,},
map {sprintf "%04d", $_} @fields), "\n";
}
Perl版 その2
while (<>) {
s{(\d+)}{sprintf "%04d", $1}ge;
print;
}
Ruby版
ARGF.each do |line|
puts line.gsub(/\d+/) {|item| sprintf "%04d", item}
end
補足
回答ありがとうございます。 一番地道で確実な方法ですね。 さまざまなサンプルソースありがとうございます。 参考にさせていただきます。