Как я могу извлечь пути URL из файла HTML? (В баш) - PullRequest
0 голосов
/ 16 мая 2018

У меня есть файл urls-list.html с несколькими путями URL внутри, в этом формате:

   <body contenteditable="true">
      <h1>File: <a href="https://test.com/Config.js" target="_blank" rel="nofollow noopener noreferrer">https://test.com/Config.js</a></h1>
      <div>
         <a href='/common/assets/locale/language_en.props' class='text'>/common/assets/locale/language_en.props</a>
         <div class='container'>                        urls: [e.get("app.content.domain") + "<span style='background-color:yellow'>/common/assets/locale/language_en.props</span>"]</div>
      </div>
      <div>
         <a href='/common/assets/locale/language_en1.props' class='text'>/common/assets/locale/language_en1.props</a>
         <div class='container'>                            remote: a + n + brandSuffix + "<span style='background-color:yellow'>>/common/assets/locale/language_en1.props</span>",</div>
      </div>
      <div>
         <a href='/common/assets/locale/language_en2.props' class='text'>/common/assets/locale/language_en2.props</a>
         <div class='container'>                            remote: a + n + "<span style='background-color:yellow'>>/common/assets/locale/language_en2.props</span>",</div>
      </div>
      <div>
         <a href='/common/assets/locale/language_en2.props' class='text'>/common/assets/locale/language_en2.props</a>
         <div class='container'>                            remote: a + n + "<span style='background-color:yellow'>>/common/assets/locale/language_en3.props</span>",</div>
      </div>
      <div>
         <a href='/common/assets/locale/language_en3.props' class='text'>/common/assets/locale/language_en3.props</a>
         <div class='container'>                            remote: a + n + "<span style='background-color:yellow'>>/common/assets/locale/language_en4.props</span>",</div>
      </div>
      <div>
     <a href='/main' class='text'>/main</a>
     <div class='container'>                    versionedAssets.isEnabled() &amp;&amp; (i = versionedAssets.getJSAsset("dashboard/boot"), r = versionedAssets.getJSAsset("dashboard<span style='background-color:yellow'>/main</span>"), l = versionedAssets.getJSAsset("appkit-utilities<span style='background-color:yellow'>/main</span>"), hybrid &amp;&amp; (i = versionedAssets.getHybridAsset("dashboard/boot"), r = versionedAssets.getHybridAsset("dashboard<span style='background-color:yellow'>/main</span>"))), envProps.get("app.blueJSVersion.enabled") ? (n.push([envProps.get("app.blueVendor.version") + "<span style='background-color:yellow'>/main</span>", envProps.get("app.blue.version") + "<span style='background-color:yellow'>/main</span>", envProps.get("app.blueApp.version") + "<span style='background-color:yellow'>/main</span>", envProps.get("app.blueView.version") + "<span style='background-color:yellow'>/main</span>", "blue-ui/dist/blue-ui/js<span style='background-color:yellow'>/main</span>", l, i, r]), n.push([{</div>
  </div>

Мне нужна помощь, чтобы извлечь все пути URL, отображаемые внутри тегов span из файла urls-list.html.

Чтобы быть более понятным, мне нужны следующие выходные данные:

    Command: ./extra-path.sh urls-list.html (or simialr)
    result:
    /common/assets/locale/language_en.props
    /common/assets/locale/language_en1.props
    /common/assets/locale/language_en2.props
    /main

Кто-нибудь может мне помочь с этим?

ОБНОВЛЕНИЕ: мне нужен только URLдорожки с желтым.(Фон-цвет: желтый)

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

Следующие могут помочь вам в том же.

cat script.ksh
awk '/span/ && match($0,/<span style=\047background-color:yellow\047>>[^<]*/){print substr($0,RSTART+39,RLENGTH-39)}'  "$1"

Добавление решения не один лайнер тоже сейчас.

cat script.ksh
awk '
/span/ && match($0,/<span style=\047background-color:yellow\047>>[^<]*/){
  print substr($0,RSTART+39,RLENGTH-39)
}'   "$1"
0 голосов
/ 16 мая 2018

Вы можете сделать это в bash, используя awk:

awk -F'[ =]' '/href/ {print $3}' urls-list.html

Объяснение:
-F говорит awk использовать пробелы и '=' в качестве разделителей
/ href / заставляет команду печати выполняться на каждой строке, содержащей "/ href /"
print $ 3 печатает третий токен

Однако это будетработать только тогда, когда формат строки ввода точно такой же, как в вашем примере.Что-то более надежное было бы:

awk -F'href=' '/href/ {print $2}' urls-list.html | awk -F'[ <>]' '{print $1}'
0 голосов
/ 16 мая 2018

Попробуйте код ниже

var href = window.location.href;
var dir = href.substring(0, href.lastIndexOf('/')) + "/";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...