文字列の部分文字列を取得する
文字列の部分文字列を取得します。
他のプログラミング言語と同様に、bashには文字列データから値を切り取る組み込み関数はありません。ただし、次のスクリプトに示すbashで、別の方法で部分文字列のタスクを実行できます。スクリプトをテストするには、次のコードを使用して「substring_example.sh」という名前のファイルを作成します。ここで、値6は部分文字列が開始する開始点を示し、5は部分文字列の長さを示します。
#!/bin/bash
Str="Learn Bash from NLP";
subStr=${Str:6:4};
echo "$subStr";
bashコマンドでファイルを実行します。
$ bash substring_example.sh
Bash
$
- ヒント
- 基本パターンは以下の通り
- ${パラメータ:オフセット:長さ}
: - Bashでの文字列の切り出しはかなりの頻度で使います。
- 知っているのと知らないのとでは、苦労が違ってきます。
- 具体例を以下にしめします。
#!/bin/bash
HOGE="abcdef"
# オフセット位置から長さ分を取得
echo ${HOGE:0:2}
# -> ab
echo ${HOGE:2:2}
# -> cd
echo ${HOGE:4:2}
# -> ef
# 長さを省略した場合はオフセットから最後まで出力
echo ${HOGE:2}
# -> cdef
# 長さにマイナスを指定した場合は最後からマイナス分引いた位置までの長さになる
echo ${HOGE:0:-2}
# -> abcd
# オフセットの位置にマイナスを指定した場合は文法として別のパラメータ展開になる(デフォルト値の指定)
# 指定した変数が空文字列の場合は右に指定した文字が入る
echo ${HOGE:-2}
# -> abcdef
HOGE=
echo ${HOGE:-2}
# -> 2
#!/bin/bash
HOGE=hoge.tar.bz2
echo ${HOGE}
# -> hoge.tar.bz2
# 最短除外
echo ${HOGE%.*}
# -> hoge.tar
# 最長除外
echo ${HOGE%%.*}
# -> hoge
#!/bin/bash
HOGE=/home/user/hoge
echo ${HOGE}
# -> /home/user/hoge
# 最短除外
echo ${HOGE#*/}
# -> home/user/hoge
# 最長除外
echo ${HOGE##*/}
# -> hoge