以下の内容はhttps://ryuichi1208.hateblo.jp/entry/2020/11/19/221925より取得しました。


【Bash】変数展開で置換をやるイロハ

100回ぐらいググっているやつ。bashにある変数展開は多機能だがその中でもたまにつかう置換機能の紹介です。

記法 概要
${変数#パターン} 文字列先頭の最短マッチ部分を削除
${変数##パターン} 文字列先頭の最長マッチ部分を削除
${変数%パターン} 文字列末尾の最短マッチ部分を削除
${変数%%パターン} 文字列末尾の最長マッチ部分を削除
${変数/検索文字列/置換文字列} 最初にマッチしたもののみ文字列を置換
${変数//検索文字列/置換文字列} 全ての文字列を置換

文字列末尾の最短マッチ部分を削除

%移行のパターンに一致した場合に削除する。拡張子の削除なんかで使えたりする

$ echo $A
11122233344411122233

$ echo ${A%333}
111222333444111222

### こんな感じで使えば拡張子の削除や変更を行える
$ for i in *.py; do mv ${i} ${i%.py} ; done

文字列先頭の最短マッチ部分を削除

変数の先頭部分の置換を行いたいケースはこっち。例えばprefixの値を変えたいケース(001みたいに付けたはいいものの桁数が足りないとか)

$ echo $B
test001

$ echo ${B#test}
001

### prefixを帰る場合はこんな感じで書ける
$ for i in *; do echo $i testa_${i#test} ; done 

参考リンク

【シェル芸人への道】Bashの変数展開と真摯に向き合う - Qiita

POSIX shの変数展開による文字列置換の限界を探る - Qiita




以上の内容はhttps://ryuichi1208.hateblo.jp/entry/2020/11/19/221925より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14