Hi,
I have the following lines that I would like to see in an array for easy comparisons and printing:
Example 1:
field1,field2,field3,field4,field5
value1,value2,value3,value4,value5
Example 2:
field1,field3,field4,field2,field5,field6,field7
value1,value3,value4,value2,value5,value6,field7
value1,value3,value4,value2,value5,value6,field7
value1,value3,value4,value2,value5,value6,field7
So, the number of lines, the number of fields and the field order can differ.
As output I would like to see:
field2,field3,field5
value2,value3,value5
field2,field3,field5
value2,value3,value5
value2,value3,value5
value2,value3,value5
Those to be printed fields and values are always present, independent from the number of fields and the field order.
And field1 and value1 are always on the first place.
The background is that has to run on different systems and those different systems will deliver different field numbers and field order.
I started with something like this, but got stuck somehow due to a lack of Perl knowledge.
Would it have been a more static input then I it would be a bit more easier.
my @LineItems;
my $LineItems;
my $FieldValue;
my $i;
my $NumItems;
my $LineCount;
open GETLINES, "cat /tmp/lines.txt |");
$LineCount = 0;
while ( $Line = <GETLINES> ) {
if ( $Line =~ /^Field1,/ ) {
$LineCount++;
@LineItems = split (/,/, $Line);
$NumItems = @LineItems;
for ( $i = 1; $i < $NumItems; $i++ ) {
$FieldValue{$i} = $LineItems[$i];
}
}
if ( $Line =~ /^Value1,/ ) {
$LineCount++;
@LineItems = split (/,/, $Line);
$NumItems = @LineItems;
for ( $i = 1; $i < $NumItems; $i++ ) {
$FieldValue{$i} = $LineItems[$i];
}
}
}
I would appreciate any kind of assistance.
ejdv