CSV를 올바르게 구문 분석하는 것은 매우 까다로운 작업입니다. 대부분의 어려움은 따옴표, 큰 따옴표, 쉼표, 공백 등을 파싱하는 실수로 발생합니다.
바퀴를 다시 발명하기보다는 잘 테스트 된 라이브러리를 사용하는 것이 좋습니다. 나는 awk이 하나 있다고 생각하지 않지만, Perl은 : DBD::CSV
을한다.
Windows의 경우 간단히 ActivePerl을 설치하십시오. 기본적으로 이미 DBD::CSV
이 설치되어 있습니다. 당신은 당신이 입력 CSV 파일이 언급 이후
use DBI;
my $dbh = DBI->connect("dbi:CSV:f_ext=.csv") or die $DBI::errstr;
my $sth = $dbh->prepare("SELECT * FROM mytable"); # access mytable.csv
$sth->execute();
while (my @row = $sth->fetchrow_array()) {
print "id: $row[0], name: $row[1]\n";
}
# you can also access columns by name, like this:
# while (my $row = $sth->fetchrow_hashref()) {
# print "id: $row->{id}, name: $row->{name}\n";
# }
$sth->finish();
$dbh->disconnect();
, 당신은 심지어 SQL을 사용할 수 있습니다 그리고
는 데이터를 검색하고 while
루프 내에서 다른 형식으로 변환하려면이 같은 펄 코드를 사용 두 테이블의 데이터를 한 번에 제대로 조인하는 명령문을 조인하십시오.
출처
2013-05-29 09:22:01
mvp
파일의 압축을 제공 할 수 있습니까? – aymericbeaumet
mvp가 좋은 대답을주었습니다. 운이 좋다면 awk에 모든 CSV 파싱 코드를 직접 작성해야합니다. Perl은 이미 CSV 라이브러리를 가지고 있으며 awk와 거의 유사하므로 사용자가 가지고있는 awk 기술이 대부분 번역해야합니다. 혼란 스러우면, awk를 perl로 변환하는 perl과 함께 제공되는 유틸리티 인 a2p를 사용하십시오. – JimR
일부 샘플 입력 및 예상 출력 게시. 당신이하고 싶은 일은 awk에서 사소한 것 같지만, 의심 스럽다면 CSV 파일의 모든 스타일을 완전히 파싱해야합니다. http : //lorance.freeshell의 Stinsons CSV 파서를 다운로드하여 사용할 수 있습니다. .org/csv. –