引用符の中にカンマを入れてcsvファイルをパイプ(|)で区切られたファイルに変換するには、シェルスクリプトが必要です。

引用符の中にカンマを入れてcsvファイルをパイプ(|)で区切られたファイルに変換するには、シェルスクリプトが必要です。

サンプルファイル(test.csv):

"PRCD-15234","CDOC","12","JUN-20-2016 17:00:00","title, with commas, ","Y!##!"
"PRCD-99999","CDOC","1","Sep-26-2016 17:00:00","title without comma","Y!##!"

結果ファイル:

PRCD-15234|CDOC|12|JUN-20-2016 17:00:00|title, with commas, |Y!##!
PRCD-99999|CDOC|1|Sep-26-2016 17:00:00|title without comma|Y!##!

動作しない私のスクリプトは次のとおりです。

while IFS="," read f1 f2 f3 f4 f5 f6; 
do  
    echo $f1|$f2|$f3|$f4|$f5|$f6;  
done < test.csv

ベストアンサー1

(generate output) | sed -e 's/","/|/g' -e 's/^"//' -e 's/"$//'

または

sed -e 's/","/|/g' -e 's/^"//' -e 's/"$//' $file

3つの表現の場合:

  • -e 's/","/|/g' = すべての区切り記号を","新しい区切り記号に置き換える|

  • -e 's/^"//' =先行"タグを削除

  • -e 's/"$//' = 行末マークの"削除

これにより、最初の区切り文字パターンと一致しない限り、ヘッダーに表示される引用符が保持されます。","

おすすめ記事