Shellにて変数substring処理をする (1) -文字数指定-

Shellで文字列変数をleftやrightするようにsubstring処理をしたい場合、単純に以下のような構文で表現してあげるだけでsubstring処理ができます。

${変数:ポジション:長さ}

以下のような sample という変数がある場合、${} を使うだけで様々な substring 処理ができるようになります。

sample="ABCDE12345vwxyz67890"

変数全体を表現

echo $sample
ABCDE12345vwxyz67890

先頭から5文字を表現

echo ${sample:5:5}
ABCDE

6文字目から5文字を表現

echo ${sample:5:5}
12345

末尾から5文字を表現

ここでは長さを取得するための ${#変数名} を使います。

echo ${sample:${#sample}-5}
67890

末尾から数えて8文字目から3文字を表現

つまり、末尾の5文字を除いて、後ろから3文字を表現します。

echo ${sample:${#sample}-8:3}
xyz

末尾から4文字を除いた文字を表現

echo ${sample::${#sample}-4}
ABCDE12345vwxyz6

実行例

bash-substring-1.png

例えば、ファイル名の拡張子を置換したい場合などに便利ですね

$ mv $filename ${filename::${#filename}-4}.png

参考

https://www.tldp.org/LDP/abs/html/string-manipulation.html

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です