私は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