いつの間にか、gawkがgawk4.0.0にバージョンが上がっていた。
EXCELのCSVのフィールド分けが
"Splitting By Content - The GNU Awk User's Guide"
http://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html
BEGIN {FPAT = "([^,]+)|(\"[^\"]+\")"} { print "NF = ", NF for (i = 1; i <= NF; i++) { printf("$%d = <%s>\n", i, $i) } }
入力:aa,"bb","cc,dd","","""",,"ee"",""ff"
出力:
NF = 7
$1 =
$2 = <"bb">
$3 = <"cc,dd">
$4 = <"">
$5 = <"""">
$6 = <"ee"">
$7 = <""ff">
上のサイトに書いてあるのでは、EXCELのCSVでは少々不具合がでるので、下のように書き直してみた。
BEGIN { FPAT = "([^,]*)|(\"([^\"]|\"\")+\")" } { print "NF = ", NF for (i = 1; i <= NF; i++) { printf("$%d = <%s>\n", i, $i) } print "" }
入力:aa,"bb","cc,dd","","""",,"ee"",""ff"
出力:
NF = 7
$1 =
$2 = <"bb">
$3 = <"cc,dd">
$4 = <"">
$5 = <"""">
$6 = <>
$7 = <"ee"",""ff">
とりあえずは、動いているかなと
ps.
って、これじゃだめだな。
考え直さないと・・・
FPAT = "(([^,]*)|(\"([^\"]|\"\")*\")) *,?"
こんな感じか?カンマが付くけど・・・
0 件のコメント:
コメントを投稿