※フィールド分け設定は、一番下。
いつの間にか、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 = "(([^,]*)|(\"([^\"]|\"\")*\")) *,?"
こんな感じか?カンマが付くけど・・・