私はそれからすべてのリンクを取得しようとしていますmaterialdesignicons.com
!私は次のことを行います。
curl -X GET https://materialdesignicons.com | grep -i "<link href=" | grep -v "<link href="
しかし、何も出力されません。まですべてがうまく動作しますgrep -v
!
ベストアンサー1
分析してみましょう。
Webクロール
curl -X GET https://materialdesignicons.com
パターン検索で結果を提供(大文字と小文字を問わない)
<link href=
grep -i "<link href="
次のステップの結果は、一致する行を検索することによって提供されます。矛盾モデル
<link href=
grep -v "<link href="
その結果、<link href=
1つ以上の大文字に一致するテキストのみを取得できます。例えば
<link href= # Will not match
<link HREF= # Will match
<LinK HrEf= # Will match
すべての値を一覧表示するには、link href
次のことを試すことができます。複数行に分割されていないリンクと一致します。
curl -X GET https://materialdesignicons.com | grep -Po "(?<=link href=([\"'])).*?(?=\g1)"
これは特に気持ちの良い正規表現ではないので、あなたのために分析してみましょう。
(?<=link href=([\"'])) # Look for "link href=" followed by either single or double quote
.*? # Match and output the shortest possible string until...
(?=\g1) # We have found a repeat of the quote we found earlier