sedでハマる@RHEL4/シェル

ファイル名に含まれる年月日を抜き出そうと、

hogedate=`echo "hogepon20070125.ahe" | sed -e "s/hogepon(\d+)\.ahe/$1/"`

みたいなコトが出来ると思ってドロ沼はまってもうた orz|||

結局

hogedate=`echo "hogepon20070125.ahe" | sed -e "s/\(hogepon\|\.ahe\)//g"`

で回避(´・ω・`)


後日、結局グループ使えた。。。書き方訳わからへんーーー

hogedate=`echo "hogepon20070125.ahe" | sed -e "s/hogepon\([0-9]*\)\.ahe/\\1/"`

シェルでsedの条件を正規表現で書くときってこういうこと?

  • グループ化するときは「\(\)」で囲む(\がいるのか・・・)
  • 「+」(1文字以上)は「\+」で
  • 「*」(0文字以上)はそのまま「*」で
  • 「|」(パイプ)は「\|」で
  • 数字は「[0-9]」。「\d」はなさげ
  • グループは「\\1」とか