bash でカンマ区切り文字を split して変数に代入

2011-2-1 22:09
このエントリーをはてなブックマークに追加

bash のシェルスクリプト内で、カンマ区切りテキストを分割して変数に入れたい場合。Perl や PHP の split みたいな動作をさせる方法です。

IFS 変数に区切り文字をセットしたうえで set コマンドを使用します。

#!/bin/bash
TEXT='AAA,hoge,2345'
IFS=','
set -- $TEXT
echo $1
echo $2
echo $3

set コマンドはタブや空白区切りの値を $1, $2, $3, ……に代入します。IFS を変更することによりカンマ区切りに対応できます。

もしくは tr コマンドでカンマを空白に置き換えて配列に代入します

#!/bin/bash
TEXT='BBB,データ,3456'
arr=( `echo $TEXT | tr -s ',' ' '`)
echo ${arr[0]}
echo ${arr[1]}
echo ${arr[2]}

なんか

VAR1=`echo ${LINE} | cut -d ',' -f 1`
VAR2=`echo ${LINE} | cut -d ',' -f 2`
VAR3=`echo ${LINE} | cut -d ',' -f 3`
……

みたいなコードをループ中に書いていた人がいたのでもうちょっとスマートにしてほしかったわけです。

  • ブックマーク : アクセス: 135,018回
  • カテゴリー : Linux
  • キーワード : ,

コメントはまだありません

コメントはまだありません。

現在、コメントフォームは閉鎖中です。

23 queries. HTML convert time: 0.166 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2013 @ futuremix.org ログイン