Chinaunix
标题:
问个稍微麻烦的问题,请高手解答
[打印本页]
作者:
macgradywk
时间:
2014-01-21 11:32
标题:
问个稍微麻烦的问题,请高手解答
假如我有这样一个文件:
force name1[4] = 0;
force name2[2] = 0;
force name1[3] = 0;
force name4[1] = 0;
force name5[2] = 0;
force name2[5] = 0;
force name6[4] = 0;
force name2[4] = 0;
force name1[5] = 0;
force name3[4] = 1;
force name3[2] = 0;
.
.
.
我想要把它变成
force name1[5:0] = 000000;
force . . .
就是把之前的文件同名的合并起来一起force,怎么做?
作者:
pitonas
时间:
2014-01-21 12:16
{:2_172:}小伙伴们, 这个低调奢华有内涵。
#!/usr/bin/perl
my %force;
my $fn = 'force name';
while (<DATA>) {
my ( $name, $index, $value ) = /name(\d+)\[(\d+)\]\s+=\s+(\d+)/;
$force{$name}{$index} = $value;
}
for my $k ( sort { $a <=> $b } keys %force ) {
my $max = 0;
$_ > $max and $max = $_ for keys %{ $force{$k} };
print "${fn}${k}[$max:0] = ";
print map { $force{$k}{$_} // 0 } 0 .. $max;
print ";\n";
}
__DATA__
force name1[4] = 0;
force name2[2] = 0;
force name1[3] = 0;
force name4[1] = 0;
force name5[2] = 0;
force name2[5] = 0;
force name6[4] = 0;
force name2[4] = 0;
force name1[5] = 0;
force name3[4] = 1;
force name3[2] = 0;
复制代码
作者:
灿烂小猪
时间:
2014-01-21 13:17
本帖最后由 灿烂小猪 于 2014-01-21 13:19 编辑
sed -i 's/\(\[[0-9][0-9]*\)\(.*\)$/\1:0\200000/' urfile
作者:
灿烂小猪
时间:
2014-01-21 13:20
错了,这是perl版,我写了个sed的程式。
作者:
macgradywk
时间:
2014-01-21 13:34
这是个二维的哈希?
回复
2#
pitonas
作者:
macgradywk
时间:
2014-01-21 13:38
[$_ > $max and $max = $_ for keys %{ $force{$k} };这句是什么意思,小弟新手求教b]回复
2#
pitonas
作者:
pitonas
时间:
2014-01-21 15:34
{:2_172:}
for ( keys %{ $force{$k} } ) {
$max = $_ if $_ > $max;
}
复制代码
回复
7#
macgradywk
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2