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

キー・値形式

入力フォーマット

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 (1634d)