RFC 4180対応版 CSVレコードの分解
Posted feedbacks - Bash
標準入力→標準出力です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | function splitCSV() {
local c in_dq after_dq
local -i count=0
while read -n 1 c; do
if [ -z "$in_req" ]; then
in_req=1
echo -n "$((++count)) => "
fi
: ${c:=$'\n'} # 改行は空文字として読まれる
if [ "$c" = \" ]; then
if [ -n "$after_dq" ]; then
echo -n \"
after_dq=''
else
after_dq=1
fi
else
if [ -n "$after_dq" ]; then
after_dq=''
if [ -n "$in_dq" ]; then
in_dq=''
else
in_dq=1
fi
fi
if [ -z "$in_dq" -a \( "$c" = , -o "$c" = $'\n' \) ]; then
in_req=''
echo
else
echo -n "$c"
fi
fi
done
}
|

raynstard
#3389()
Rating1/1=1.00
[ reply ]