2014-01-15 3 views
0

안녕하세요 여러분 stackoverflow.CSV 모든 행에 문자열 반복

저는 CSV 파일에 인쇄 할 때 모든 행에 배치해야하는 var가 있습니다.이 작업을 수행하는 데 실마리가 없습니다. CSV의

예 후

Name; Job; FunctionNumber; **Group**; Afdeling 
ASD; ASD; 1;    12;  Bewaking; 

그룹 내 CSV 파일로 인쇄 할 때 입력 한 모든 행과 repeaten해야합니다 변환.

편집 : CSV는 전에 내가 소스 csv 파일의 제목에서 그룹 번호를 검색하는 데 사용하는 코드를 보여주기 위해 최선 probbaly이기도

Name; Job; FunctionNumber; Afdeling 
ASD; ASD; 1;    Bewaking; 

변환. "이동"과 같은

 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
#!/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"); 
} 

저장 한 다음 입력 :

chmod +x go 
./go < yourfile 
+0

나의 실제 CSV 데이터에는 라인의 끝 부분에 미안하지만 '내 잘못. – Brein

+0

우리가 시작하기 전과 후에 우리의 데이터가 어떻게 변했는지 보여주십시오. –

+0

감사합니다. – Brein

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]

마지막으로, 선택적 매개 변수는 출력을 파일로 보냅니다.

$insertinFile의 첫 번째 행을 읽는 경우 $header의 값을 취하고, 그렇지 않은 경우 $value의 값을 취합니다. 필드는 split이고, 새 열 값은 splice이고, 새 라인은 print입니다.

희망이 도움이됩니다.