Bashスクリプトのパターンに基づいて複数の文字列を抽出する

Bashスクリプトのパターンに基づいて複数の文字列を抽出する

ディレクトリリストを生成するシェルスクリプトを作成しています。

入力としてaは長いHTML文字列を受け取ります:

https://www.mycompany.com/posts/aureliaflore_china-seoul-startup-activity-6571925510337728512-acAw","$type":"com.traver.voyager.feed.actions.Action"},
link to post","url":"https://www.mycompany.com/posts/aureliaflore_reuters-top-news-on-twitter-activity-6571392661482233856-T3dO","$type":
article","$type":"com.traver.voyager.feed.actions.Action"},{"actionType":"SHARE_VIA","text":"Copy link to post","url":"https://www.mycompany.com/posts/aureliaflore_are-you-thinking-to-the-benefits-of-digitalization-activity-6570119712154451968-927T","$type":"com.traver.voyager

出力を簡単にカスタマイズできるように、スクリプトはURLテーブルのみを表示します。

https://www.mycompany.com/posts/aureliaflore_china-seoul-startup-activity-6571925510337728512-acAw
https://www.mycompany.com/posts/aureliaflore_reuters-top-news-on-twitter-activity-6571392661482233856-T3dO
https://www.mycompany.com/posts/aureliaflore_are-you-thinking-to-the-benefits-of-digitalization-activity-6570119712154451968-927T

検索パターンは「」で始まります。https://www."、XXXXXX 文字(動的サイズ)、"(引用符を抽出しない)で終わる

現在のソリューションはcut -fに基づいていますが、合計入力サイズが動的であるため、パターンが見つかりません。

答え1

サンプルデータは破損したjsonフラグメントのように見えるため、jqそれを使用して必要なものを抽出する必要があります。今後元の入力に何をしても、次のように見えます。

ただし、保持しているコンテンツからhttps://www二重引用符で始まり、それを含まないURLを抽出するには、次のようにしますgrep

$ grep -o 'https://www[^"]*' input.txt 
https://www.mycompany.com/posts/aureliaflore_china-seoul-startup-activity-6571925510337728512-acAw
https://www.mycompany.com/posts/aureliaflore_reuters-top-news-on-twitter-activity-6571392661482233856-T3dO
https://www.mycompany.com/posts/aureliaflore_are-you-thinking-to-the-benefits-of-digitalization-activity-6570119712154451968-927T

関連情報