1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

シェルスクリプトによる文字列処理:該当文字列を削除をする

Posted at

シェルスクリプトによる文字列処理:該当文字列を削除をする

調べるにあたった経緯

業務でシェルを作成しました。
処理の一部として下記条件で作成しました。

  • 引数として指定する値はフルパスで記述されたファイル名
  • 引数を使用して二つの変数に格納する
     * 一つはフルパスで入力されたファイル名
     * もう一方はパスを抜いたファイル名のみ
    今回は引数で指定した値のうちディレクトリを排除して変数に格納するために、
    コマンドを使用せずシェルスクリプトで置換を行ったのでその処理についてまとめていきたいと思います

bash置換の書式について

引数例:

${FULLPASS}=/work/TEST/aaa.txt
ケース1:

${変数%マッチパターン}

後方からの検索の一致で一番初めにマッチした部分を削除
例:
${FILE}=${FULLPASS%aaa.txt} echo ${FILE} /work/TEST/

ケース2:

${変数%%マッチパターン}

後方からの検索の一致で一番後ろまでマッチした部分までを削除
${FILE}=${FULLPASS%/TEST/aaa.txt} echo ${FILE} /work
ケース3:
${変数#マッチパターン}
前方からの検索の一致で一番初めにマッチした部分を削除
${FILE}=${FULLPASS#/work/TESTaaa} echo ${FILE} /aaa.txt
ケース4:
${変数##マッチパターン}
前方からの検索の一致で一番後ろまでマッチした部分までを削除
${FILE}=${FULLPASS##/work} echo ${FILE} /TEST/aaa.txt

シェルで用いたスクリプト

上記を経て、自分があげた条件とマッチして、今回シェルで用いたスクリプトが以下となります。

${FILE}=${FULLPASS#/work/TESTaaa} echo ${FILE} /aaa.txt

最後に

今回初めて現場で作成したシェルがかなり大作だと思って、自分の成果物として宝物として残しておきたいと考えましたが、持ち出しができない制約に悔しい思いをしました、、、

参考
【Linux】シェルスクリプトによる文字列処理:置換や削除をする方法
https://eng-entrance.com/linux-shellscript-replacement

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?