* カンマ区切り文字列を分割する [#ae47d088]
** キー・値形式 [#idae88ba]
*** 入力フォーマット [#oe3cc874]
taro,10
hanako,8
jiro,9
while read LINE; do
KEY=${LINE%,*};
VAL=${LINE#*,}
echo DEBUG: $KEY
echo DEBUG: $VAL
done
キー・値形式ならbashのパラメーター展開($FOO%,*}/$FOO#*,})を使う。
** 3カラム以上の形式 - bash配列 [#z67d7be2]
** 3カラム以上の形式 [#z67d7be2]
1,taro,10
2,hanako,8
3,jiro,9
while read LINE; do
_LINE=$(echo $LINE | sed -e 's/,/ /g')
COLS=($_LINE)
echo DEBUG1: ${COLS[0]}
echo DEBUG2: ${COLS[1]}
echo DEBUG3: ${COLS[2]}
done
3カラム以上あるならbash配列を利用する。あらかじめスペース区切り以外の場合はsedでスペース区切りに変換する。
3カラム以上あるならbash配列を利用する。あらかじめスペース区切り以外の場合はsedでスペース区切りに変換する。但し、この方法は"2,,8"のようにカラムの値が空文字列の場合、結果が狂う。
** 指定した位置のカラムだけ取り出す - cutコマンド [#ja42d3f0]
1,taro,10
2,hanako,8
3,jiro,9
while read LINE; do
NAME=$(echo $LINE | cut -d , -f 2)
echo DEBUG: $NAME
done