如何从HTML文件中提取标签的属性值?

tzi*_*ppy 5 regex bash

我知道,不要使用curl,grep和sed解析.但我正在寻找一种简单的方法,而不是一种非常安全的方法.

所以我得到一个带curl的HTML文件,我需要从标签中获取某个属性的值.我用grep来告诉我它说的那条线token.这只发生一次.这给了我一个完整的div:

<div class="userlinks">
  <span class="arrow flleft profilesettings">settings</span>
  <form class="logoutform" method="post" action="/logout">
    <input class="logoutbtn arrow flright" type="submit" value="Log out">
    <input type="hidden" name="ltoken" value="a5fc8828a42277538f1352cf9ea27a71">
  </form>
</div>
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到value属性(例如"a5fc8828a42277538f1352cf9ea27a71")?

per*_*eal 11

没有必要grep:

sed -n '/token/s/.*name="ltoken"\s\+value="\([^"]\+\).*/\1/p' input_file
Run Code Online (Sandbox Code Playgroud)


Ste*_*eve 9

一种方式,使用sed:

sed "s/.* value=\"\(.*\)\".*/\1/" file.txt
Run Code Online (Sandbox Code Playgroud)

结果:

a5fc8828a42277538f1352cf9ea27a71
Run Code Online (Sandbox Code Playgroud)

HTH

  • 如果您只想匹配下一个引号之前的字符串,请在组内使用 [^"]* 而不是 .* - 即不是最后一个之前 (2认同)

Azi*_*zSM 5

另一种方式使用awk

grep "ltoken" file.txt | awk -F"\"" '{print $6}'
Run Code Online (Sandbox Code Playgroud)

对于不同的属性值只需增加或减少$6