質問: CNT_A/0610/GAB/AA/OUT/ CNT_CH/0000/GAB/AA/OUT/ CNT_A/14/GAB/AA/OUT/ CNT_CO/061788/GAB/AA/OUT/ のCNT_.*/と/で囲まれた数値を取得したいのですが、 Number=$(cat "sample.txt" | sed 's/CNT_.*\/\([^\/]*\).*$/\1/g') 実行結果: Number=CNT_A/0610/GAB/AA/OUT/ Number=CNT_CH/0000/GAB/AA/OUT/ Number=CNT_A/14/GAB/AA/OUT/ Number=CNT_CO/061788/GAB/AA/OUT/ なぜか取得できません。 sed 's/CNT_.\/\([^\/]*\).*$/\1/g' とするとCNT_Aの場合は取得できました。 CNT_任意の文字列/ここを取得/とするにはどうすればいいでしょうか?
回答: エスケープで見にくいので、正規表現の区切り文字を`:`に変えます(任意の文字が区切りに使えますよ)。 ``` sed 's:CNT_[^/]*/\([^/]*\).*$:\1:g' ``` ですね。