【问题标题】:extract table values form curl output从 curl 输出中提取表值
【发布时间】:2017-01-14 11:04:30
【问题描述】:

我正在尝试提取执行唯一字符串的随机值,布局是

<tr><td><a>uniquestring"</a></td>
<td>RANDOM NUMBER k/b</td>
<td>RANDOM NUMBER</td>
<td>RANDOM NUMBER</td>
<td>RANDOM NUMBER</tr>

我想做类似的事情

curl -is http://webpage.com/ |grep uniquestring | echo RANDOM NUMBER k/b

我还想在一行中返回所有值,即 echo

uniquestring RANDOMNUMBER k/b RANDOMNUMBER RANDOMNUMBER RANDOMNUMBER

该页面生成了上面 5 行的多个“块”,我只对获取特定唯一字符串之后的值感兴趣。

【问题讨论】:

  • 输出来自curl 的事实并不真正相关。你想要的是某种从bash 解析 HTML 的方法。 echo 并不真正相关,awksed 都不适合解析 HTML。
  • cat input | grep -A 5 uniquestring | perl -ne 's|&lt;[^&lt;]+?&gt;||g; chomp; print $_ . " ";'
  • 效果很好,谢谢

标签: bash curl awk sed echo


【解决方案1】:

使用TXR:

$ txr -c '@(skip)
<tr><td><a>@uniq"</a></td>
<td>@num1 k/b</td>
<td>@num2</td>
<td>@num3</td>
<td>@num4</tr>
@(output)
@uniq @num1 k/b @num2 @num3 @num4
@(end)' - < data
eb09b744e3e914d67f86a1fee82e9002634ac 123098340 k/b 4949848 9648 334938

这里我们尽可能多地匹配结构,包括静态文本k/b。假设唯一字符串是可变的;我们不知道它是什么,想提取它。

示例data 文件包含:

$ cat data
<tr><td><a>eb09b744e3e914d67f86a1fee82e9002634ac"</a></td>
<td>123098340 k/b</td>
<td>4949848</td>
<td>9648</td>
<td>334938</tr>

【讨论】:

    【解决方案2】:

    单行返回所有值

    curl -s webpage.com | grep -A 5 uniquestring | sed 's/<[^>]\+>//g' | tr '\n' ' '
    

    只返回 RANDOM NUMBER k/b

    curl -s webpage.com | grep -A 1 uniquestring | grep -v "uniquestring" | sed 's/<[^>]\+>//g' | tr '\n' ' '
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-16
      • 2022-10-17
      • 1970-01-01
      • 2012-01-20
      • 2017-10-14
      • 2020-05-08
      • 1970-01-01
      相关资源
      最近更新 更多