パソコン悪戦苦闘記録

bashのパラメータ展開時に文字列置換

 bashシェルでは、パラメータ展開(変数展開)の際に、変数に代入された文字列の編集など、文字列操作ができます。
 これによって、条件分岐や、文字列の置換処理が、パラメータ展開(変数展開)だけでできるようになります。





一部削除
 変数に代入された文字列の一部を取り除いて展開することができます。
 1 ハッシュ(#)を使った前方一致削除
 2 パーセント(%)を使った後方一致削除
については、
  こちらの記事をご覧ください。


一部抽出
 変数に代入された文字列の一部分の抽出(切り出し)には、コロン(:)を使います。
  こちらの記事をご覧ください。


一部置換
 変数に代入された文字列のうち、「パターン」に一致した部分を、別の文字列に置換する方法もあります。
 その書式は、
  ${変数名/パターン/置換後文字列}
  ${parameter/pattern/string}
です。
 このように、文字列置換にはスラッシュ記号を使います。

 例えば、
  namae=goosyun ; echo ${namae/goo/hoge}
を実行すると、ディスプレイ画面に
  hogesyun
と出力されます。

 なお、  
  namae=gogosyun ; echo ${namae/go/hoge}
だと、hogegosyun と出力されます。
 上記の例では、「gogo」と2つの「go」があるのに、最初の「go」だけが置換されるからです。
 このようにパターンにマッチする部分が複数あって、そのすべてを置換したい場合は、パターン指定する前にスラッシュ(/)を2つ並べて//とします。そうすることで、マッチしたすべてが置換されます。

 例えば、
  namae=gogosyun ; echo ${namae//go/hoge}
を実行すると、
  hogehogesyun
と出力されます。

 文字列置換といえば、「sed」や「awk」が思い浮かびます。もちろん「sed」や「awk」でもできます。
 けれども、変数に代入された文字列の置換ならば、パラメータ展開(変数展開)と併せての同時処理でできるというわけです。

 ぜひとも覚えておいて、その場面ではしっかり使いこなしたいものです。




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

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

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

 

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

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

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