質問: sample: Study/date_0000_Shell_B/aaa/_This_is_a_PEN_OK_M/610/english/source/output/ このようなPASSをある変数に格納し、PENと610をそれぞれ別の変数に格納したいのですが、正規表現を持ち要らない方法はありますでしょうか? a_PEN_ OK_M/610/ a_"この間を取得"_ OK_M/この間を取得"/ のようにa_ _とOK_M/ /は固定でそれぞれ囲まれた部分を取得するという方法です。 ご回答よろしくお願いいたします。 A=$(expr "$sample" : ".*a_\(".*"\)_") B=$(expr "$sample" : ".*OK_M/\(.*\)/") のようにすると A=PEN_OK B=610/english/source/output/ となってしまします。 何か方法ありませんでしょうか?
回答: こう? ``` #!/bin/bash sample='Study/date_0000_Shell_B/aaa/_This_is_a_PEN_OK_M/610/english/source/output/' A=${sample} A=${A#*a_} A=${A%%_*} B=${sample} B=${B#*OK_M/} B=${B%%/*} echo "$A" # PEN echo "$B" # 610 ``` パターンにマッチしないと変な結果になるとおもいますけど。