bash - 文字列の操作

フィルタを使った文字列処理

実行した結果を``で囲みもとの変数に代入する

$ str="abc def ghi"
$ str=`echo "$str" | sed -e "s/def/xyz/g"`
$ echo "$str"
abc xyz ghi

文字列の連結

変数を並べて書く。

余分なホワイトスペースの削除

echoコマンドで出力する際にシェルが余分なスペースを削除するので、それを元の変数に戻す。

$ str=`echo $str`

文字列の長さ

exprのlengthオプションを使う

$ expr length "$str"

文字列の中の文字列

ある文字列がその中に含まれているか判定し含まれていればその行を書き出すのがgrepコマンド。
文字列が含まれていれば真を、含まれていなければ偽を返す。

#!/usr/bin/sh
if echo "$1" | grep [0-9] ; then
    echo "found it"
fi

文字列の中の一部分の切り出し

exprまたはsedコマンドを使う。

expr "元の文字列" : "/(取り出す文字列)/"
$ expr "123456789" : ".*\(456\).*"
$ str=`echo "$str" | sed -e 's/^..//'`  #最初の2文字を削除
$ str=`expr "$str" : "..\(.*\)"`