* カンマ区切り文字列を分割する [#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



トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS