【16.文字列の部分文字列を取得する】ざっくりわかる「シェルスクリプト」

文字列の部分文字列を取得する

文字列の部分文字列を取得します。
他のプログラミング言語と同様に、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

書籍の紹介

【15.変数に2つの文字列を組み合わせる】ざっくりわかる「シェルスクリプト」

【15.変数に2つの文字列を組み合わせる】ざっくりわかる「シェルスクリプト」

【17.変数に2つの数値を追加します】ざっくりわかる「シェルスクリプト」

【17.変数に2つの数値を追加します】ざっくりわかる「シェルスクリプト」