2016-08-05 4 views
1

CSVログファイルから余分な二重引用符を置き換える必要があります(フィールドはコンマで区切り、二重引用符で囲みます)。置換は、CSVの最後のフィールドにのみ影響する必要があります。1つのCSVフィールドに余分な二重引用符をbashで代入する

入力ログファイルの例:

"24-12-2015","23:07:08","00","01","00","00","START","00","END","JS786JGDG7899JSGJHG"dsdajasghsahd" 

予想される出力:

"24-12-2015","23:07:08","00","01","00","00","START","00","END","JS786JGDG7899JSGJHG''dsdajasghsahd" 

私はbashやpythonでこのタスクを完了する必要があります。

+0

何か助けを得るためにこれまでに試したことを説明する必要があります。 –

+0

なぜ 'python'と' bash'タグの両方を使うのですか? – anubhava

+1

これは私の最初の投稿です。私は推奨タグを使用しました。 – Fantaghost

答えて

1

あなたはAWKを使用することができます。

awk "{gsub(/'/, \"''\", \$NF)} 1" file.csv 

"24-12-2015","23:07:08","00","01","00","00","START","00","END","JS786JGDG7899JSGJHG''dsdajasghsahd" 
+1

あなたはポイントのために必死ですか... – 123

+1

あなたは深刻ですか?これらの担当者のほとんどは、私が毎日の制限を超えているとカウントされていません。多くの場合、問題は専門家にとっては些細なものに見えるかもしれませんが、ポスターにとってはそれほど簡単ではありません。 – anubhava

+1

それは些細なことではない、質問はひどく、ちょうどコードを求めていて、意味をなさない。 – 123

0

はこれを試してください。

awk -F, -v OFS="," '{gsub(/\"/,"\47\47",$NF)gsub(/^\47\47/,"\"",$NF);gsub(/\047\047$/,"\"",$NF) }1' file 

"24-12-2015","23:07:08","00","01","00","00","START","00","END","JS786JGDG7899JSGJHG''dsdajasghsahd" 
+0

サンプルとして使用される1行で動作しますが、ログ全体に対して実行すると、フィールド終端文字として最後に使用された二重引用符も置き換えられます。行の終わりは "\ r \ nから" \ r \ nに変換されます – Fantaghost

関連する問題