입력하다:
<a href=FII/FOO./>FOO</a>
산출:
FOO
묻다:입력을 출력으로 바꾸는 방법은 무엇입니까? FII 및 "./>"는 상수입니다. FOO는 "-", "." 뿐만 아니라 어떤 영문자로도 변경할 수 있습니다.
업데이트: ("FOO"를 명확히 함)
FOO=ASD
then:
<a href=FII/ASD./>ASD</a>
FOO=XYZ
<a href=FII/XYZ./>XYZ</a>
업데이트 2: (이것은 작동하지 않습니다 :O)
[user@notebook ~] echo '<a href=FII/FOO./>FOO</a>'
<a href=FII/FOO./>FOO</a>
[user@notebook ~] echo '<a href=FII/FOO./>FOO</a>' | sed 's/>[ \t]*\([^ \t]\+\)[ \t]*</\1/'
<a href=FII/FOO./FOO/a>
[user@notebook ~]
답변1
링크 이름을 원하는 경우:
sed 's@^<a href[^>]*>\([^<]*\)</a>$@\1@'
답변2
href=FII/
당신이하고 싶은 것이 다음을 제외한 모든 것을 버리는 것이라면 ... ./
다음과 같은 것을 권장합니다 ( |
sed 구분 기호 사용):
sed -e 's|^.*href=FII/\([A-Za-z.-]*\)\./>.*$|\1|'
예:
$ echo "<a href=FII/ASD./>ASD</a>"|sed 's|^.*href=FII/\([A-Za-z.-]*\)\./>.*$|\1|'
ASD
$ echo "<a href=FII/XYZ./>XYZ</a>"|sed 's|^.*href=FII/\([A-Za-z.-]*\)\./>.*$|\1|'
XYZ
$ echo "<a href=FII/morgel.dorgel./>XYZ</a>"|sed 's|^.*href=FII/\([A-Za-z.-]*\)\./>.*$|\1|'
morgel.dorgel
답변3
한 줄에 올바른 형식의 레이블을 보장할 수 있다면 다음과 같이 할 수 있습니다.
sed 's/^.*>[ \t]*\([^ \t]\+\)[ \t]*<.*$/\1/' your_file
FOO
이는 귀하의 예에서 중복을 확인하지 않습니다 . 여는 태그 구분 기호와 태그 본문이 반복되는 인스턴스 만 바꾸려면 FOO
다음 명령을 사용할 수 있습니다.
sed 's@< *a *href *= *FII/\([-a-zA-Z.]\+\) *\./\?> *\1 *< */ *a *>@\1@' your_file
더 나은 가독성을 위해 Perl에서도 동일합니다.
perl -pe 's{
< \s* a \s* href \s* = \s* FII/ # Constant part
([-a-zA-Z.]+) # Payload (saved in $1)
\s*\./?\s*> # Optional space, ./ and >
\s*\1\s* # Payload repeated
<\s*/\s*a\s*> # Closing delimiter
}{$1}x # Replace match with $1
' your_file