書式設定されていないテキストからURLを抽出する

書式設定されていないテキストからURLを抽出する

HTMLファイルなどの書式設定されたテキストから部分文字列を抽出する例だけが見つかりましたが、私の場合は、次のURLのリストを出力する必要があります。

... 
https://twitter.com/user1/status/xyza 
https://twitter.com/user1/status/xyzb
https://twitter.com/user1/status/xyzc
https://twitter.com/user2/status/xyza
https://twitter.com/user2/status/xyzb
...

構造化されていない非常に大きなファイル(+ 100 MB)では、以下は私の入力です。

n          3\\n        \\n      \\n  \\n    \\n      \\n      Retweeted\\n    \\n      \\n        \\n          3\\n        \\n      \\n  \\n\\n      \\n  \\n    \\n      \\n        \\n      \\n      Like\\n    \\n      \\n        \\n          5\\n        \\n      \\n  \\n    \\n      \\n        \\n      \\n      Liked\\n    \\n      \\n        \\n          5\\n        \\n      \\n  \\n\\n      \\n\\n        \\n    \\n  \\n      \\n        \\n        More\\n      \\n  \\n  \\n  \\n    \\n    \\n  \\n  \\n    \\n      \\n        Copy link to Tweet\\n      \\n      \\n        Embed Tweet\\n      \\n        \\n  \\n\\n\\n\\n\\n  \\n\\n    \\n\\n      \\n\\n      \\n        \\n  \\n    \\n      \\n  \\n\\n      \\n    \\n\\n  \\n\\n\\n      \\n\\n\\n    \\n      \\n          \\n\\n    \\n        \\n          \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n        \\n        \\n  \\n    \\n  \\n      \\n\\n    \\n        \\n\\n    \\n\\n          Back to top ↑\\n\\n  \\n\\n\\n    \\n  \\n    \\n  \\n\\n\\n  \\n\\n\\n    \\n  \\n    Loading seems to be taking a while.\\n    \\n      Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.\\n    \\n  \\n\\n\\n\\n      \\n    \\n  \\n\\n      \\n    \\n\\n\\n\\n\\n\\n  \\n\\n\\n  \\n    \\n      Suggested by Twitter\\n      \\n        \\n      \\n    \\n   \\n\\n    \\n  \\n    \\n  \\n    \\n    false\\n  \\n  \\n    \\n    \\n  \\n\\n  \\n\\n\\n\\n  \\n      \\n  \\n    \\n      \\n        © 2015 Twitter\\n        About\\n        Help\\n        Terms\\n        Privacy\\n        Cookies\\n        Ads info\\n      \\n    \\n  \\n\\n\\n  \\n\\n\\n\\n      \\n    \\n  \\n\\n\\n    \\n  \\n  \\n\\n\\n\\n    \\n    \\n  \\n\\n  \\n\\n  \\n\\n    \\n  \\n\\n  \\n    \\n\\n\",\"meta_tags\":[{},{\"content\":\"0; URL=https://mobile.twitter.com/i/nojs_router?path=%2FTerriBauman%2Fstatus%2F680996161843380224\"},{\"name\":\"robots\",\"content\":\"NOODP\"},{\"name\":\"msapplication-TileImage\",\"content\":\"//abs.twimg.com/favicons/win8-tile-144.png\"},{\"name\":\"msapplication-TileColor\",\"content\":\"#00aced\"},{\"name\":\"swift-page-name\",\"content\":\"permalink\"},{\"content\":\"article\"},{\"content\":\"https://twitter.com/TerriBauman/status/680996161843380224\"},{\"content\":\"Terri Bauman on Twitter\"},{\"content\":\"https://pbs.twimg.com/media/BcaVtMKCEAAyz9f.jpg:large\"},{\"content\":\"true\"},{\"content\":\"“Social Media Jobs: https://t.co/NDDK4WaRA4 Please Retweet to spread words #OnlineJobs #Jobs”\"},{\"content\":\"Twitter\"},{\"content\":\"2231777543\"}],\"links\":[\"https://twitter.com/\",\"https://twitter.com/about\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/#supported_languages\",\"https://twitter.com/?lang=id\",\"https://twitter.com/?lang=msa\",\"https://twitter.com/?lang=cs\",\"https://twitter.com/?lang=da\",\"https://twitter.com/?lang=de\",\"https://twitter.com/?lang=en-gb\",\"https://twitter.com/?lang=es\",\"https://twitter.com/?lang=fil\",\"https://twitter.com/?lang=fr\",\"https://twitter.com/?lang=it\",\"https://twitter.com/?lang=hu\",\"https://twitter.com/?lang=nl\",\"https://twitter.com/?lang=no\",\"https://twitter.com/?lang=pl\",\"https://twitter.com/?lang=pt\",\"https://twitter.com/?lang=ro\",\"https://twitter.com/?lang=fi\",\"https://twitter.com/?lang=sv\",\"https://twitter.com/?lang=vi\",\"https://twitter.com/?lang=tr\",\"https://twitter.com/?lang=el\",\"https://twitter.com/?lang=ru\",\"https://twitter.com/?lang=uk\",\"https://twitter.com/?lang=he\",\"https://twitter.com/?lang=ar\",\"https://twitter.com/?lang=fa\",\"https://twitter.com/?lang=mr\",\"https://twitter.com/?lang=hi\",\"https://twitter.com/?lang=bn\",\"https://twitter.com/?lang=gu\",\"https://twitter.com/?lang=ta\",\"https://twitter.com/?lang=kn\",\"https://twitter.com/?lang=th\",\"https://twitter.com/?lang=ko\",\"https://twitter.com/?lang=ja\",\"https://twitter.com/?lang=zh-cn\",\"https://twitter.com/?lang=zh-tw\",\"https://twitter.com/login\",\"https://twitter.com/account/begin_password_reset\",\"https://twitter.com/signup\",\"https://twitter.com/TerriBauman\",\"https://pbs.twimg.com/profile_images/598412523734310913/t3ettYkj.jpg\",\"https://pbs.twimg.com/profile_images/598412523734310913/t3ettYkj.jpg\",\"https://twitter.com/TerriBauman\",\"https://twitter.com/TerriBauman\",\"https://twitter.com/TerriBauman\",\"https://twitter.com/TerriBauman\",\"https://twitter.com/hashtag/Entrepreneur?src=hash\",\"https://twitter.com/hashtag/SocialMediaExpert?src=hash\",\"https://twitter.com/hashtag/SocialMediaMarketer?src=hash\",\"https://twitter.com/hashtag/BusinessOwner?src=hash\",\"https://twitter.com/hashtag/InternetMarketer?src=hash\",\"https://twitter.com/hashtag/SocialMediaJobs?src=hash\",\"https://t.co/ZciT91kZwP\",\"https://twitter.com/about\",\"http:////support.twitter.com\",\"https://twitter.com/tos\",\"https://twitter.com/privacy\",\"http:////support.twitter.com/articles/20170514\",\"http:////support.twitter.com/articles/20170451\",\"https://twitter.com/#\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"http://support.twitter.com/forums/26810/entries/78525\",\"http:////dev.twitter.com/docs/embedded-tweets\",\"http:////dev.twitter.com/docs/embedded-tweets\",\"https://twitter.com/account/begin_password_reset\",\"https://twitter.com/signup\",\"https://twitter.com/signup\",\"https://twitter.com/login\",\"http://support.twitter.com/articles/14226-how-to-find-your-twitter-short-code-or-long-code\",\"https://twitter.com/TerriBauman/status/680996164058001408\",\"https://twitter.com/TerriBauman/status/680977383365578752\",\"https://twitter.com/TerriBauman\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://t.co/NDDK4WaRA4\",\"https://twitter.com/hashtag/OnlineJobs?src=hash\",\"https://twitter.com/hashtag/Jobs?src=hash\",\"https://t.co/SJvkM1yWUI\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/TerriBauman/status/680996161843380224\",\"https://twitter.com/cakafete\",\"https://twitter.com/KassemAlYateem\",\"https://twitter.com/Worldspacetech1\",\"https://twitter.com/ElisaBW\",\"https://twitter.com/patrickarrelle\",\"https://twitter.com/AcousticsPro1\",\"https://twitter.com/#\",\"http://status.twitter.com\",\"https://twitter.com/about\",\"http:////support.twitter.com\",\"https://twitter.com/tos\",\"https://twitter.com/privacy\",\"http:////support.twitter.com/articles/20170514\",\"http:////support.twitter.com/articles/20170451\"]}"},{"url":"http://status.twitter.com/page/2","result":"{\"date_crawled\":\"2015-12-27T10:01:58Z\",\"title\":\"Twitter Status\",\"lossyHTML\":\"\\n\\n\\r\\n\\r\\n    \\r\\n        \\r\\n        \\r\\n        \\r\\n        \\r\\n            \\r\\n        \\r\\n        \\r\\n        \\r\\n        \\r\\n        \\r\\n        \\r\\n        \\r\\n        \\r\\n        \\r\\n        \\r\\n        \\r\\n        \\r\\n                \\r\\n        \\r\\n\\r\\n        \\r\\n        Twitter Status\\r\\n        \\n\\r\\n        \\r\\n         \\r\\n\\r\\n        \\r\\n\\r\\n    \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\r\\n    \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n        \\r\\n\\r\\n\\r\\n\\r\\n    \\r\\n    \\r\\n        \\r\\n            \\r\\n                \\r\\n                    Updates on the status of the Twitter service.\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nRelated Links\\r\\nOfficial Company Blog\\r\\n\\r\\nOfficial Help Documents\\r\\n\\r\\nDeveloper Community\\r\\n\\r\\n\\r\\n\\r\\n                    Archive\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n                    Powered by Tumblr\\r\\n                \\r\\n\\r\\n                \\r\\n            \\r\\n            \\r\\n\\r\\n\\r\\n            \\r\\n                \\r\\n                    \\r\\n       

私は以下を試しました。

grep 'https://' input.txt | grep 'status' >> output.txt

sedとawkの使用例を見たことがありますが、理解するのは非常に難しいだけでなく、ほとんど常に列の選択に基づいていますが、私の場合は不可能です。

答え1

2つのスラッシュを持つURLを取得するには、GNU grepを試してください。

grep -o 'http[s]*://[^/][^\\]*' file

複数のスラッシュを持つURL:

grep -o 'http[s]*://[^\\]*' file

おすすめの本:スタックオーバーフロー正規表現に関するよくある質問

[s]*:アスタリスク数量子(*)は、前の式が0回以上一致する可能性があることを示します。ここで、前の式は文字クラス(括弧で示されている)にのみ含まれる任意の文字にすることができますs。使用する方が便利ですs*

[^\\]*:バックスラッシュを除くすべての文字と0回以上一致します。脱出を防ぐために、バックスラッシュを使用してバックスラッシュを脱出しました]

関連情報