つれづれ電脳記(日くらしPCに向かひて)

つれづれなるままに、日くらしPCに向かひて、その悪戦苦闘ぶりをそこはかとなく書き付くるおじさん。たまに雑談[管理人:goosyun]

つれづれなるままに、日くらしPCに向かひて、デジタル関係の悪戦苦闘ぶりをそこはかとなく書き付くるおじさんです。
たまに雑談してます。連絡・問い合わせフォームは、ページ最下部に置いています。[著者(運営人):goosyun]

(当ブログには本文中に広告リンクが含まれています。)

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