囲む引用符に加えて、文字列の間に二重引用符があります。

囲む引用符に加えて、文字列の間に二重引用符があります。

リクエストがあります。

私のCSVファイルに文字列があり、引用符を削除せずに"Testurteil "sehr gut""ファイルをロードする必要があります。redisまたは私はこれが欲しい:Testurteil "sehr gut"閉じる引用符があっても構いません。

ベストアンサー1

努力する:

perl -pi.back -le 's/"(?:[^"]|"(?=[^,]))*"|[^",]*/($r=$&)=~
  s@(^"|"$|\\.)|"@$1||"\\\""@ge;$r/ge' file.csv

経験的な方法を使用して、文字を囲む二重引用符文字を識別し、バックスラッシュでエスケープします。

たとえば、次のように変更されます。

 "asd","","a,b"c,d"e,f",""",,blah

到着する:

 "asd","","a,b\"c,d\"e,f","\"",,blah

(原本はそのままにしてくださいfile.csv.back

エスケープの代わりに一重引用符に変更するには:

perl -pi.back -le 's/"(?:[^"]|"(?=[^,]))*"|[^",]*/($r=$&)=~
  s@(^"|"$|\\.)|"@$1||"'\''"@ge;$r/ge' file.csv

おすすめ記事