두 문자열 사이의 문자열 가져오기

두 문자열 사이의 문자열 가져오기

이 문자열에서 [%L10n.msg('foo')%]내부 텍스트를 가져와야 [%L10n.msg('하므로 ')%]이 예에서는 을 가져와야 합니다 foo.

많은 예를 찾았지만 그 중 아무 것도 작동하지 않았습니다. 다음과 같이 시도했습니다.

echo "[%L10n.msg('foo')%]" | sed -n -e '/[%L10n.msg(\'/,/\')%]/p'

하지만 오류가 발생해요

bash: 예상치 못한 마커 ")" 근처에 구문 오류가 있습니다.

고쳐 쓰다: 내 문자열이 다음 문자열에 있을 수 있다고 상상해 보세요.

Some ' very [%% ]long ' text [%L10n.msg('foo')%] with lot of [%characters%]

테스트 파일:

Some ' very [%% ]long ' text [%L10n.msg('foo')%] with lot of [%characters%]
fefe
          <a class="w3-bar-item w3-button" href='/html/html_examples.asp'>HTML Examples</a>

          <a class="w3-bar-item w3-button" href='/html/html_exercises.asp'>HTML Exercises</a>

fefrheerghirlg wgwa g [%L10n.msg('foo')%]


<>"

답변1

어때요?

$ echo "[%L10n.msg('foo')%]" | sed "s/\[%L10n.msg('//; s/')%]//"
foo

또는 새 입력 샘플을 사용하여

echo "Some ' very [%% ]long ' text [%L10n.msg('foo')%] with lot of [%characters%]" | sed "s/^.*\[%L10n.msg('//; s/')%].*$//"
foo

또는 입력을 두 번째로 변경합니다(읽기테스트 파일지금) 시도해 보세요

sed -n "/^.*\[%L10n.msg('/ {s///; s/')%].*$//;p}" file
foo
foo

관련 정보