区切り記号付きのファイルがあります;
。私のアプリケーションは、これらの区切り文字に基づいてデータを解析します。文字列フィールドは列間""
と列内にあり、テキストで区切り文字を使用できます。そのファイルの区切り文字を変更したい(例:に変更|
)""
。例は次のとおりです。
入力する:
"BARCELONA";"";"Country.666;53;98";15;19;"test";4343;63647;655848
出力
"BARCELONA"|""|"Country.666;53;98"|15|19|"test"|4343|63647|655848
ベストアンサー1
正確な出力を得るには、
$ perl -MText::CSV -lpe '
BEGIN{$p = Text::CSV->new({sep_char => ";"})}
$_ = join "|", map { /^\d+$/ ? $_ : qq("$_") } $p->fields() if $p->parse($_)
' INPUT
"BARCELONA"|""|"Country.666;53;98"|15|19|"test"|4343|63647|655848
枠にとらわれない言及にこだわらないと、
$ csvformat -d';' -D'|' INPUT
BARCELONA||Country.666;53;98|15|19|test|4343|63647|655848
数値以外の値を参照するように入力と出力を強制します。ほぼ必要な方法で動作しますが、明らかに数値フィールドを浮動小数点に昇格します。
$ csvformat -d';' -u2 -D'|' -U2 INPUT
"BARCELONA"|""|"Country.666;53;98"|15.0|19.0|"test"|4343.0|63647.0|655848.0