Sed將
將 '(.+)'
或 {(.+)}
替換為 1
我可以
{(.+)}
–>\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"
一種方法可以是
sed -E '/^(\{.+\}|".+")$/s/.(.+)./\1/'
或這個:
sed -E 's/\{(.+)\}|"(.+)"/\1\2/'
或者,如果 Perl 是一個選項,那麼它可以變得更簡單。
您可以改用它:
$ echo '{x}' | sed -E 's/^["{](.+)["}]$/\1/' x $ echo '"x"' | sed -E 's/^["{](.+)["}]$/\1/' x
您可以在模式
(\{.+\}|".+")
中看到括號和引號位於擷取組內,而您要擷取的內容位於它們之間。