sed를 사용하여 문자열의 특정 부분을 삭제하시겠습니까?

sed를 사용하여 문자열의 특정 부분을 삭제하시겠습니까?
$ echo '<a href="mailto:NA?Subject=AB42525216 - FOOBAR bla bla - bla">NA</a>'
<a href="mailto:NA?Subject=AB42525216 - FOOBAR bla bla - bla">NA</a>
$ echo '<a href="mailto:NA?Subject=AB42525216 - FOOBAR bla bla - bla">NA</a>' | sed 's/SOMEMAGIC/NA/g'
NA

내 질문: "echo"에서 문자열을 삭제하기 위해 SOMEMAGIC을 사용하는 방법은 무엇입니까? 구분 기호는 > 제 생각에는

답변1

<a href>xx</a>태그 내부의 값을 추출하려고하는 것 같습니다. 그렇다면 명령은 다음과 같아야 합니다.

GNU sed:

sed -r 's/^<a [^>]*>([^<]*)<.*$/\1/g' file

기존 sed:

sed 's/^<a [^>]*>\([^<]*\)<.*$/\1/g' file

예:

$ echo '<a href="mailto:NA?Subject=AB42525216 - FOOBAR bla bla - bla">NA</a>' | sed -r 's/^<a [^>]*>([^<]*)<.*$/\1/g'
NA

$ echo '<a href="mailto:NA?Subject=AB42525216 - FOOBAR bla bla - bla">NA</a>' | sed 's/^<a [^>]*>\([^<]*\)<.*$/\1/g'
NA

$ echo '<a href="mailto:NA?Subject=AB42525216 - FOOBAR bla bla - bla">fooooooooooooooobaaaaaaaaaar</a>' | sed 's/^<a [^>]*>\([^<]*\)<.*$/\1/g'
fooooooooooooooobaaaaaaaaaar

관련 정보