`"(.+)"` 또는 `{(.+)}`를 `\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

한 가지 접근 방식은 다음과 같습니다.

 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


패턴에서 (\{.+\}|".+")대괄호와 따옴표를 볼 수 있습니다.~에캡쳐 그룹, 캡쳐하고 싶을 때~ 사이그들을.

관련 정보