CSV在每一行中重复一个字符串

时间:2014-01-15 09:17:32

标签: perl csv

嘿,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";

2 个答案:

答案 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

希望这有帮助!