使用 Unix 命令根据标准使用正则表达式从 html 转储中选择特定部分

使用 Unix 命令根据标准使用正则表达式从 html 转储中选择特定部分

我遇到了一个问题,我应该只显示页面转储中票数 >= 1 的命令http://www.commandlinefu.com使用 Unix 命令。我在链接中附加了文件的一部分:https://pastebin.com/4dEQD5us。投票和命令用以下 html 标签表示:

    div 类=“票数”

    div 类=“命令”

我尝试使用 grep 选择命令和投票标签。但我不知道如何设置条件才能得到想要的答案。

答案1

在底部这一页,有一个链接到他们的应用程序编程接口。阅读和理解告诉您,要以适合解析的格式(例如 JSON)获取数据,您可以使用,例如

curl -s 'https://www.commandlinefu.com/commands/browse/json'

这是一个 JSON 文档,您可以使用以下命令轻松地从中提取投票数大于零的命令jq

curl -s 'https://www.commandlinefu.com/commands/browse/json' |
jq -r '.[] | select(.votes|tonumber > 0).command'

我们需要将.votes顶级数组中的每个条目转换为数字,因为它在数据中被编码为字符串。这就是为什么我们tonumber在将其与零进行比较之前将其传递。

相关内容