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