グループ化とキャプチャは、実際の世界ではなく、おもちゃの問題に適しています。

グループ化とキャプチャは、実際の世界ではなく、おもちゃの問題に適しています。

おもちゃの質問:

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

実際のデータに満足する必要があります。

関連情報