嘿,stackoverflow的人。
我有一个var,我必须在每行中将它打印到我的CSV文件中,而且我不知道如何做到这一点。
转换后的CSV示例
Name; Job; FunctionNumber; **Group**; Afdeling
ASD; ASD; 1; 12; Bewaking;
打印到我的CSV文件时,必须对每行输入重复组。
编辑:CSV转换前
Name; Job; FunctionNumber; Afdeling
ASD; ASD; 1; Bewaking;
最好显示我用来从源csv文件的标题中检索组号的代码。
my $filespec = $TMP_Path;
my $dirname = dirname $TMP_Path;
my $filename = basename $TMP_Path;
my $groep = substr($filename,5,index($filename,'.')-5);
print $groep."\n";
答案 0 :(得分:0)
#!/usr/bin/perl
use strict;
use warnings;
my $group="something";
while (<>) {
# Trim end of line character
chomp;
# Define variables to hold each CSV field
my ($f1,$f2,$f3,$f4);
# Break line up on semicolons
($f1,$f2,$f3,$f4) = split(';');
# Output with group in fourth field
printf("$f1;$f2;$f3;$group;$f4\n");
}
另存为“go”,然后输入:
chmod +x go
./go < yourfile
答案 1 :(得分:0)
您希望在该列下插入新列标题和重复值。这是一个选项:
use strict;
use warnings;
my ( $header, $value ) = ( '**Group**', 12 );
while (<>) {
my $insert = $. == 1 ? $header : $value;
my @fields = split /;/;
splice @fields, 3, 0, $insert;
print join ';', @fields;
}
用法:perl script.pl inFile [>outFile]
最后一个可选参数将输出定向到文件。
如果正在读取$insert
的第一行,则 $header
取值为inFile
,否则为$value
的值。字段为split
,新列值为splice
d,然后新行为print
。
希望这有帮助!