通常、私は次のようなことをします
IFS=','
columns=( $LINE )
ここで、$ LINEは、私が読んでいるcsvファイルの行です。
ただし、カンマが埋め込まれたcsvファイルを処理するにはどうすればよいですか?私は数百ギガのファイルを処理する必要があるので、すべてを迅速に行う必要があります。つまり、行の複数の読み取りやループは絶対にありません(前回試したところ、いくつかの要因が遅くなりました)。
コードの一般的な構造は次のとおりです。
FILENAME=$1
cat $FILENAME | while read LINE
do
IFS=","
columns=( $LINE )
# affect columns changes here
newline="${columns[*]}"
echo "$newline"
done
できれば、私は行く何かが必要です
FILENAME=$1
cat $FILENAME | while read LINE
do
IFS=","
# code to tell bash to ignore if IFS is within an open quote
columns=( $LINE )
# affect columns changes here
newline="${columns[*]}"
echo "$newline"
done
ヒントをいただければ幸いです。そうでなければ、私はおそらくこのようなものを処理するために別の言語を使用することに切り替えます。