特定のパターンからURLを抽出する(Google Notifier)

特定のパターンからURLを抽出する(Google Notifier)

(私が知っている限り)grepコマンドとsedコマンドのすべての可能な組み合わせを試しましたが、次のパターン(通常のテキストGoogle警告メール)でURLを抽出できませんでした。

"url": "https://www.google.com/url?rct=3Dj\u0026sa=3Dt\u0026url=3Dhtt=
p://abcnews.go.com/US/wireStory/judge-orders-forfeiture-cartel-money-launde=
ring-case-44765120\u0026ct=3Dga\u0026cd=3DCAEYACoTNzAxNDE5ODc4MzMzMTc5OTA4O=
TIaYjdkMGIxMjNmMjc0YWM4ODpjb206ZW46VVM\u0026usg=3DAFQjCNHKeTb3brU2sr0qOpXXJ=
fuW9Nfntg"

明らかに私が抽出したいのは次のとおりです。

http://abcnews.go.com/US/wireStory/judge-orders-forfeiture-cartel-money-laundering-case-44765120

したがって、「url = 3D」と「\」の間の内容を抽出する必要があります。

私はさまざまなgrepとsedのバリエーションを試しましたが、何も機能しません。

誰もがこの問題を解決するのに役立つことができればとても感謝します。

PS:URLが抽出されたら=文字を処理する必要があることを知っていますが、一度に1つの問題が発生します。 :)

ベストアンサー1

次のコマンドラインを使用して処理できます。

cat INBOX | sed -z -e 's/=\n//g' | \
   sed -e 's/.*u0026url=3D//;t a;d;:a' -e 's/\\u0026ct=3D.*//'

最初のステップsedは、「=」で終わる行を後続の行に関連付けて、具体的に興味深い行の1行を作成することです。

2番目のステップでは、sedまずヘッダーを削除し、そのヘッダーのない行を削除して関心のある行を減らしてから、ターゲット行の尾部分を削除します。

おすすめ記事