goo blog サービス終了のお知らせ 

パソコン悪戦苦闘記録

bashのパラメータ展開で文字列の一部抽出

 昨日(2024年11月10日)、bashシェルのパラメータ展開時、変数の値(代入された文字列)の一部を削除する方法を記事にまとめました。

 「#」や「##」を使った「前方一致削除」
 「%」や「%%」を使った「後方一致削除」
です。

 変数の値の一部削除については、
  ⇒ こちらの記事をご覧ください。



 今回は、変数の値(文字列)の一部分の取り出しについてです。
 「文字列の一部分の取り出し」のことを、「切り出し」っていう表現を使うようです(業界用語か?)。





 基本は、
  ${変数名:数値:長さ}
英語版のmanページの表現では、
  ${parameter:offset:length}
です。

 ${変数名:数値:長さ} と書くことによって、「数値」の位置から「長さ」の分だけ、文字列の一部を取り出すことができます。
 なお、「数値」は、配列のインデックスと同じく、0から数える点に注意が必要です。つまり、1文字目は「0」で、2文字目が「1」です。

 私はまだ実際に使用したことはありませんが、これはなかなか便利そうです。いったん覚えたら、おそらく頻繁に使用することになるでしょう。


 具体的な例は、次のとおりです。
 namae=goosyun ; echo ${namae:3:4}
を実行すると、
 syun と出力されます。

 namae=goosyun ; echo ${namae:0:3}
だと、goo となります。

 ${変数名:数値:長さ}のうち、「長さ」を省略して、${変数名:数値}とすると、数値の位置から末尾までに展開されます。
 namae=goosyun ; echo ${namae:3}
の実行で、syun と出力されます。
 つまり、4文字目から末尾までの文字列が取り出されます。

 ちなみに、前方一致削除の#を使い、
 namae=goosyun ; echo ${namae#goo}
としても、同じ実行結果 syun が出力されます。




それでは、また次の記事で
goosyun
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「Ubuntu」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事