Извлечение 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 МБ) это то, что мой вход выглядит следующим образом:

 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, но в дополнение к тому, что их очень сложно понять, они почти всегда основаны на выборе столбцов, который в моем случае невозможен.

One Solution collect form web for “Извлечение URL из неформатированного текста”

Попробуйте это с GNU grep, чтобы получить URL-адреса с двумя слэшами:

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

URL-адреса с двумя и более слэшами:

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

Рекомендуемое чтение: Часто задаваемые вопросы о регулярных выражениях переполнения стека

[s]* : квантор звезды ( * ) означает, что предыдущее выражение может совпадать с нолем или более раз. Здесь предыдущим выражением может быть любой символ из класса символов (отмеченный скобками), который содержит только s . Легче использовать s* .

[^\\]* : соответствует любому символу, кроме обратного слэша, ноль или более раз. Я избежал обратную косую черту с обратной косой чертой, чтобы предотвратить экранирование ] .

  • Как связать URL-адреса файлов?
  • Терминал - создание гиперссылок
  • Любой CLI для проверки URL?
  • Почему эта команда ffmpeg работает в bash, а не zsh?
  • Wget - получение рекурсивных URL-адресов из списка URL-адресов
  • Любой способ кодирования url в команде curl?
  • Wget не будет рекурсивно загружать
  • Загрузите файл на сервер?
  • Домены третьего уровня
  • Escape закрывает круглые скобки из URL с помощью firefox -remote
  • Правило перенаправления для Apache: добавление www в URL
  • Interesting Posts

    Доступ к MTP-устройству в терминале

    Настроить задание на срок действия

    Когда именно context_switch () переключает управление на новый процесс?

    Установка скорости мыши в Gnome, как и в других средах рабочего стола

    Печать полей с помощью awk

    zsh – полностью расширяет двоичный путь на вкладке <tab>

    Eclipse Mars не будет запускаться на ArchLinux с Gnome

    Как работает эмулирующая клавиатура?

    Grub спасет, если Ubuntu USB не подключен?

    Анализ использования диска для корневого раздела, за исключением других разделов, смонтированных с помощью программы GUI?

    Любой способ заставить все приложения java использовать определенный параметр java?

    Объединение двух интернет-соединений с двух сетевых интерфейсов для получения двойной скорости

    Несколько кукловодов за балансиром нагрузки

    Попытка настроить пользователя sudo

    Терминал не принимает некоторые типизированные символы юникода

    Linux и Unix - лучшая ОС в мире.