2013-05-14 1 views
-5

내 질문에 제목이 완전히 나와 있지 않습니다.CSV 파일을 Java 또는 C++로 2D 배열로 변환하는 방법

 
a, date, b, c, d, Username, e, Description 

는 A, B, C, D, E는 아무것도 사용할 수 필요가 없습니다 : 나는 다음과 같은 형식으로 각 라인에 많은 데이터 라인을 가진 텍스트 파일이 있습니다.

주 :

  • 기간이 형식에 -> 2013-04-07T22 : 23 : 58Z
  • 설명 중 하나를 로그인하다 (이하 "T22 : 23 58Z는"필요하지 않습니다) 로그 아웃하거나 파일에 걸쳐 여러 번 표시됩니다
  • 같은 사용자 이름을 확장 나는 텍스트 파일에서 데이터를 걸릴 것입니다 코드, 사용자가 그 날 연장 출력과 얼마나 많은을 쓸 필요가

타임스. 텍스트 파일의

예 :

 
a,2013-04-07T22:23:58Z,b,c,d,john,extend 
a,2013-04-07T22:23:51Z,b,c,d,john,login 
a,2013-07-07T22:23:51Z,b,c,d,john,extend 
a,2013-04-07T22:23:58Z,b,c,d,mark,extend 
a,2013-03-07T22:23:51Z,b,c,d,frank,login 
a,2013-07-11T22:23:51Z,b,c,d,john,extend 

예 출력 : 나는이 작업을 수행 할 수있는 방법

 
2013-04-07: 
john -> 1 extend 
mark -> 1 extend 

2013-07-07: 
john -> 1 extend 

2013-07-11: 
john -> 1 extend 

누군가가 나에게 설명 할 수, 또는 더 나은 아직 내게 보여줘?

+8

프로그래밍 사양으로 이것은 나쁘지는 않습니다. 누군가가 당신을 위해 당신의 일을 할 수있는 충분한 정보가 있습니다. 그러나 질문으로, 당신은 당신의 질문에 대답하기 위해 무엇을 시도 했습니까? (http://whathaveyoutried.com) –

+1

도서관 이용 - http://commons.apache.org/proper/commons-csv / –

답변

0

여기 없어 정말 필요한 언어,하지만 AWK :

#!/bin/awk 
BEGIN { 
    FS=","; 
} 
/extend/{ 
    split($2,date,"T"); 
    dates[date[1],$6]++; 
} 
END { 
    last = "" 
    n = asorti(dates, dest) 
    for (i = 1; i <= n; i++) { 
    split(dest[i], idx, SUBSEP) 
    if (last != idx[1]) { 
     last = idx[1] 
     print "\n"idx[1] 
    } 
    print idx[2] " -> " dates[idx[1], idx[2]] " extend" 
    } 
} 
0

의 솔루션을 다른 솔루션입니다 아닌 필요한 언어 .. PHP에서, 같은 콘솔

<?php 

$handle = fopen("php://stdin", "r"); 
$dates = array(); 

while (!feof($handle)) { 
    $data = explode(',', stream_get_line($handle, 200, "\n")); 
    if (trim($data[6])=='extend') { 
     @$dates[strstr($data[1], 'T', true)][$data[5]]++; 
    } 
} 

arsort($dates); 

foreach ($dates as $date => $users) { 
    echo $date; 

    foreach ($users as $user => $times) 
    echo "\n$user -> $times extend"; 

    echo '\n\n'; 
} 

?> 

사용) this : : /script.php < input.txt

관련 문제