実際のCSVファイルを正確に解析する方法はありますか? [コピー]

実際のCSVファイルを正確に解析する方法はありますか? [コピー]

私はbashシェルを使用しています。 CSVファイルが実際のCSV形式で観察されるCSVファイルを解析したいと思います。このスレッドでは -https://stackoverflow.com/questions/4286469/how-to-parse-a-csv-file-in-bash、わかります

#!/bin/bash

file_path=$1
echo $1

while IFS=, read -r ID name address zipcode
do
    echo "I got:$ID|$name|$address|$zipcode"
done < $file_path

ただし、CSVファイルでは、一部のセル自体にカンマを含めることができるため、これらの項目の周りに引用符があります。したがって、次のファイルを正しく解析できません。

1,1871,"222 W. Merchandise Mart Plaza, Suite 1212",60605

CSVファイルを正確に解析できるように、上記のスクリプトを変更するか、新しいスクリプトを生成する方法はありますか?

ベストアンサー1

cvskit必要なもの: CSVファイルのための強力なgrep、切り取り、結合等。のみ使用しますcsvformat

この場合、私は以下が大好きです。

(1)入力データを「良い」区切り記号(例:「、」から「§」)に変換し、不要な引用符を削除します。

csvformat -d § input | ...

(2)「良い」区切り記号を使用したデータ処理

... | awk 'BEGIN{FS=OFS="§"} ...' | ...

(3)CSVに戻す(「§」から「、」へ)必要に応じて引用符を追加します。

csvformat -D § > final

おすすめ記事