grepを使う

grepを使う

私はそれからすべてのリンクを取得しようとしていますmaterialdesignicons.com!私は次のことを行います。

curl -X GET https://materialdesignicons.com | grep -i "<link href=" | grep -v "<link href="

しかし、何も出力されません。まですべてがうまく動作しますgrep -v

ベストアンサー1

分析してみましょう。

  1. Webクロール

    curl -X GET https://materialdesignicons.com
    
  2. パターン検索で結果を提供(大文字と小文字を問わない)<link href=

    grep -i "<link href="
    
  3. 次のステップの結果は、一致する行を検索することによって提供されます。矛盾モデル<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

おすすめ記事