У меня есть файл csv со следующими данными образца.Как изменить поля в файле CSV с помощью Perl?
o-option(alphabetical)
v-value(numerical)
number1,o1,v1,o2,v2,o3,v3,o4,v4,o5,v5,o6,v6
number2,o1,v11,o2,v22,o3,v33,o44,v44,o5,v55,o6,v66
and so on....
Требуемый объем производства.
NUM,o1,o2,o3,o4,o44,o5,o6
number1,v1,v2,v3,v4,,v5,v6
number2,v11,v22,v33,,v44,v55,v66
and so on...
В этих данных, все варианты одинаковы т.е. o1, o2 и т.д. через из файла, но значение параметра 4 меняется, т.е. o4, O44 и т.д. В общей сложности насчитывается около 9 различных значений опций в o4. Может кто-нибудь, пожалуйста, помогите мне с кодом perl, чтобы получить требуемый результат.
Я написал приведенный ниже код, но все еще не получил требуемый результат.
my @values;
my @options;
my %hash;
while (<STDIN>) {
chomp;
my ($srn,$o1,$v1,$o2,$v2,$o3,$v3,$o4,$v4,$o5,$v5,$o6,$v6) = split /[,\n]/, $_;
push @values, [$srn,$v1,$v2,$v3,$v4,$v5,$v6];
push @options, $o1,$o2,$o3,$o4,$o5,$o6;
}
#printing the header values
my @out = grep(!$hash{$_}++,@options);
print 'ID,', join(',', sort @out), "\n";
#printing the values.
for my $i (0 .. $#values) {
print @{$values[$i]}, "\n";
}
Выход:
ID,o1,o2,o3,o4,o44,o5,o6
number1,v1,v2,v3,v4,v5,v6
number2,v1,v2,v3,v44,v5,v6
Как из приведенного выше вывода, когда значение 44 приходит, оно попадает под ОПЦИЯ4 и, следовательно, остальные значения сдвига влево. Значения не сопоставляются с параметрами. Пожалуйста, предложите.
Лучше всего предоставить конкретные данные, а не только o1, v1. Поместите в фактических количествах и материалах. Я не могу следовать тому, что вы хотите по этому образцу. – ghostdog74