カンマ区切り文字列を分割する

キー・値形式

入力フォーマット

 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カラム以上の形式

 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でスペース区切りに変換する。但し、この方法は"2,,8"のようにカラムの値が空文字列の場合、結果が狂う。

指定した位置のカラムだけ取り出す - cutコマンド

 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

Last-modified: 2013-12-31 (火) 06:49:25