シェルスクリプトのループ処理 文字列の区切り文字を変更する

デフォルトでは空白、タブ、改行で区切るようになっているが、これを変更したい時がある。

一番お手軽なのは一時的にsedで区切り文字を空白に置き換えてしまうことだ。

echo "hoge,fuga" | sed -e 's/,/ /g'

シェルスクリプトの区切り文字を定義している
IFS 環境変数を変えるという手もある。

#!/bin/sh
testspace="hoge fuga"
testcomma="hoge,fuga"
for val in ${testspace}
do
        echo ${val}
done
for val in ${testcomma}
do
        echo ${val}
done
IFS=','
for val in ${testcomma}
do
        echo ${val}
done

シェルの中だけの変更にとどめておけばほかのプログラムに影響はない!

なおsedでの区切り文字も/に限らず利用可能である。
下記ではsedの区切り文字に#を利用している。URLをsedで置換するときにはエスケープ不要なので#が便利!

echo "hoge,fuga" | sed -e 's#,# #g'
カテゴリー: Linux タグ: , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload the CAPTCHA.