``(.+)'` または `{(.+)}` を `\1` に置き換えてください。

``(.+)'` または `{(.+)}` を `\1` に置き換えてください。

私はできます。

  1. {(.+)}-->\1そして
  2. "(.+)"-->\1または
  3. ({.+}|".+")--> \1

私は何をしますか{(.+)}|"(.+)"- > \1

$ echo "\"x\"" | sed -E 's/"(.+)"/\1/'
x
$ echo "{x}" | sed -E 's/{(.+)}/\1/'
x
$ echo "\"x\"" | sed -E 's/^(\{.+\}|".+")$/\1/' 
"x"

答え1

1つのアプローチは次のとおりです。

 sed -E '/^(\{.+\}|".+")$/s/.(.+)./\1/'

またはこれ:

sed -E 's/\{(.+)\}|"(.+)"/\1\2/'

または、Perlがオプションの場合は、簡単にすることもできます。

答え2

代わりにこれを使用できます。

$ echo '{x}' | sed -E 's/^["{](.+)["}]$/\1/'
x
$ echo '"x"' | sed -E 's/^["{](.+)["}]$/\1/'
x


パターンに(\{.+\}|".+")角かっこと引用符を表示できます。~へキャプチャグループ、キャプチャしたいとき〜サイそれらを。

関連情報