CSVファイルの整形処理(2) – 1カラムの中に、カンマを含む –

改行だけでなく、以下にあるカンマを含んだCSVファイルは、(1)での対応でもできないので、順番に対応します。

1.まず、カラムの改行を整える

2.””内の改行を修正する

——
1,2,3,”ああああ,いいいい”,”heoへろ”

—–

実際、新潟市オープンデータではあります!

perlでカラム内の改行を整える

#!/usr/bin/env perl
use strict;
use warnings;

my $line = "";
while (<>) {
    $line .= $_;
    my @dqm = $line =~ /\"/g; # double quote を数える
    next if @dqm % 2; # 奇数なら次の行を末尾に足す
    {
    ### カラム中の改行を削除し1行で出力
    $line =~ s/\n//g;
    print "$line\n";}

    $line = ""; # 処理後は空にする
}

awkのを{FPAT=”([^,]+)|(\”[^\”]+\”)”
}使う

ただのカンマ区切りだと、正しくカラムを取り出せない
$ echo '1,2,3,"ああああ,いいいい","heroへろ"' | awk -F ',' '{print $4}'
"ああああ
対応したもの ※ただし、改行があると上のperlを前段で実行して処理した
$ echo '1,2,3,"ああああ,いいいい","heroへろ"' | awk -v FPAT='([^,]+)|(\"[^\"]+\")' '{print $4}'
"ああああ,いいいい"
タイトルとURLをコピーしました