저 할 수 있어요
{(.+)}
-->\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
한 가지 접근 방식은 다음과 같습니다.
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
패턴에서 (\{.+\}|".+")
대괄호와 따옴표를 볼 수 있습니다.~에캡쳐 그룹, 캡쳐하고 싶을 때~ 사이그들을.