그룹화 및 캡처는 실제 세계가 아닌 장난감 문제에 적합합니다.

그룹화 및 캡처는 실제 세계가 아닌 장난감 문제에 적합합니다.

장난감 질문:

$ 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=.

실제 데이터에 만족해야 합니다.

관련 정보