장난감 질문:
$ echo "foo <a href="/topic/null-hypothesis/" data-sc="text link:topic link">Null hypothesis</a> bar" | sed -E 's@.*<a href=/topic/[^>]*>([^<]*)</a>.*@\1@'
Null hypothesis
실제 세계(sed는 아무것도 필터링하지 않음):
$ cat *html | grep '<a href="/topic' | sed -E 's@.*<a href=/topic/[^>]*>([^<]*)</a>.*@\1@'
<a href="/topic/null-hypothesis/" data-sc="text link:topic link">Null hypothesis</a>,
<a href="/topic/approximation/" data-sc="text link:topic link">Approximation</a>,
<a href="/topic/estimation-methods/" data-sc="text link:topic link">Estimation methods</a>,
<a href="/topic/statistical-variance/" data-sc="text link:topic link">Statistical variance</a>,
<a href="/topic/identifiability/" data-sc="text link:topic link">Identifiability</a>,
<a href="/topic/preliminary-estimates/" data-sc="text link:topic link">Preliminary estimates</a>,
<a href="/topic/matrix-inversion/" data-sc="text link:topic link">Matrix inversion</a>
"귀무가설"에 도달하려면 어떤 변화가 필요합니까?
첨부된:
$ cat *html | grep -n10 '<a href="/topic' | sed -E 's@.*<a href=/topic/[^>]*>([^<]*)</a>.*@\1@'
538-
539-
540-
541-
542-
543-
544- <div class="topics-list mtl">
545- <p class="hide">You can always find the topics here!</p>
546- <strong>Topics:</strong>
547-
548: <a href="/topic/null-hypothesis/" data-sc="text link:topic link">Null hypothesis</a>,
549-
550: <a href="/topic/approximation/" data-sc="text link:topic link">Approximation</a>,
551-
552: <a href="/topic/estimation-methods/" data-sc="text link:topic link">Estimation methods</a>,
553-
554: <a href="/topic/statistical-variance/" data-sc="text link:topic link">Statistical variance</a>,
555-
556: <a href="/topic/identifiability/" data-sc="text link:topic link">Identifiability</a>,
557-
558: <a href="/topic/preliminary-estimates/" data-sc="text link:topic link">Preliminary estimates</a>,
559-
560: <a href="/topic/matrix-inversion/" data-sc="text link:topic link">Matrix inversion</a>
561-
562- </div>
563-
564- <div class="mvl left">
565-
566-
567-
568-
569-<div id="flag-description" aria-live="assertive">
570- <a class="hover" data-qa="give-feedback" data-toggle="flag-reason" href="#" title="Give feedback on the topics for this item.">
ṔS2: 전체 *html 파일:https://pastebin.com/RLnWXKWe
답변1
cat *html | grep -oE '\"\/.*\/\"' | awk -F'/' '{print $(NF-1)}'
이것은 잘 작동할 것입니다.
답변2
첫 번째 명령을 최대(포함하지 않음)까지 실행해야 합니다 |
. 즉,오직주문하다 echo
.
$ echo "foo <a href="/topic/null-hypothesis/" data-sc="text link:topic link">Null hypothesis</a> bar"
foo <a href=/topic/null-hypothesis/ data-sc=text link:topic link>Null hypothesis</a> bar
무엇이 문제인지 아시나요? 기대 href=
하고 data-sc=
따르나요 ?선두끈?
명령 echo
이 잘못되었습니다. 처음에 있는 것이 마지막에 있는 것과 "
일치하지 않습니다 . "
이는 발견된 첫 번째 것과 일치합니다.
$ echo "foo <a href="/topic/null-hypothesis/" data-sc="text link:topic link">Null hypothesis</a> bar"
↑▲▲▲▲▲▲▲▲▲▲▲▲↑.......................↑▲▲▲▲▲▲▲▲▲↑....................↑▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲↑
아래 기호가 있는 문자는 따옴표 사이에 있습니다. 따라서 및 문자를 ▲
성공적으로 인용한 것입니다. 인용되지 않으면 혼란을 야기할 수 있습니다. 다음 문자는 인용되지 않습니다. 그리고 인용 자체는 인용되지 않습니다!<
>
.
참조를 참조하는 가장 쉬운 방법은 다른 참조를 사용하는 것입니다. 즉, 첫 번째와 마지막을 "
로 변경합니다 '
.
그런 다음 sed 명령을 수정하여 사용하십시오.옳은아래와 같이 장난감 데이터:
sed -E 's@.*<a href="/topic/[^>]*>([^<]*)</a>.*@\1@'"
나중에 추가된 내용을 참고하세요href=
.
실제 데이터에 만족해야 합니다.