1. ホーム
  2. regex

sedのプラス記号が効かない

2023-09-25 10:51:23

質問

を置き換えようとしています。 /./ または /././ または /./././ から / をbashスクリプトでのみ使用することができます。sedの正規表現をなんとか作りましたが、うまくいきません。

variable="something/./././"
variable=$(echo $variable | sed "s/\/(\.\/)+/\//g")
echo $variable # this should output "something/"

だけ置き換えようとすると /./ の部分文字列だけを置換しようとすると、sed の正規表現でうまくいきました。 \/\.\/ . で部分文字列の乗算を使用するために、sed regexはより多くのフラグを必要としますか? + または * ?

どのように解決するのですか?

使用方法 -r オプションで sed を拡張正規表現にする。

$ variable="something/./././"
$ echo $variable | sed -r "s/\/(\.\/)+/\//g"
something/