48 lines
1.2 KiB
Perl
48 lines
1.2 KiB
Perl
|
use warnings;
|
||
|
use strict;
|
||
|
|
||
|
use Getopt::Long;
|
||
|
|
||
|
my $inputfile = '';
|
||
|
my $outputfile = 'a.out';
|
||
|
|
||
|
GetOptions ("i|input|inputfile=s" => \$inputfile, # string
|
||
|
"o|output|outputfile=s" => \$outputfile ); # string
|
||
|
|
||
|
unless ($inputfile) {
|
||
|
die("Missing option -i");
|
||
|
}
|
||
|
|
||
|
open(my $inFile, "<", $inputfile) || die "Can't open $inputfile: $!";
|
||
|
open(my $outFile, ">", "$outputfile.csv") || die "Can't open $outputfile: $!";
|
||
|
|
||
|
my %funHash = ();
|
||
|
my %funHashTrace = ();
|
||
|
my $trace;
|
||
|
|
||
|
while (<$inFile>) {
|
||
|
if (/0::@\d+:(\S+)\s/) {
|
||
|
$funHash{$1} += 1;
|
||
|
$funHashTrace{$1} += 1;
|
||
|
} elsif ($trace && /^TraceId\s(\d+)/) {
|
||
|
open(my $traceOutFile, ">", "$outputfile-$trace.csv") || die "Can't open $outputfile-$trace.csv: $!";
|
||
|
while (my ($key, $value) = each %funHashTrace) {
|
||
|
print $traceOutFile "$key;$value\n";
|
||
|
}
|
||
|
$trace = $1;
|
||
|
%funHashTrace = ();
|
||
|
} elsif (/^TraceId\s(\d+)/) {
|
||
|
$trace = $1;
|
||
|
%funHashTrace = ();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
open(my $traceOutFile, ">", "$outputfile-$trace.csv") || die "Can't open $outputfile-$trace.csv: $!";
|
||
|
while (my ($key, $value) = each %funHashTrace) {
|
||
|
print $traceOutFile "$key;$value\n";
|
||
|
}
|
||
|
|
||
|
while (my ($key, $value) = each %funHash) {
|
||
|
print $outFile "$key;$value\n";
|
||
|
}
|