在 html 文件上使用 grep 后,我得到以下输出:
<div id="v3060000-3062005" class="BLAH...>
<div id="v50001027-50002018" class="BLAH...>
<div id="v907200-907202" class="BLAH...>
<div id="v20024011-20024012" class="BLAH...>
Run Code Online (Sandbox Code Playgroud)
我需要从上面的行中提取数字字符串并将它们组合成一个 URL,例如:
http://x.y.z/3060000-3062005,50001027-50002018,907200-907202,20024011-20024012.mp3
Run Code Online (Sandbox Code Playgroud)
我可以知道如何使用 shell 脚本来做到这一点吗?
通常,我会建议您使用合适的 HTML 解析器来解析 HTML。
但是,这些数据看起来非常简单:使用双引号(可选后跟“v”)作为字段分隔符,获取每行的第二个字段。然后用逗号连接碎片
result=$( grep ... file.html | awk -F'"v?' '{print $2}' | paste -sd, )
echo "http://x.y.z/$result.mp3"
Run Code Online (Sandbox Code Playgroud)
假设您将问题的输入数据存储在名为 的文件中data.txt
,您可以使用此命令生成 URL:
grep -Po '\d+-\d+' data.txt | tr '\n' ',' | sed -r 's/(.*),$/http:\/\/x.y.z\/\1.mp3/'
Run Code Online (Sandbox Code Playgroud)
这是一个示例运行:
$ grep -Po '\d+-\d+' data.txt | tr '\n' ',' | sed -r 's/(.*),$/http:\/\/x.y.z\/\1.mp3/'
http://x.y.z/3060000-3062005,50001027-50002018,907200-907202,20024011-20024012.mp3
Run Code Online (Sandbox Code Playgroud)
它能做什么:
grep -Po '\d+-\d+' data.txt
NUMBER-NUMBER
从您的数据中提取所有序列,例如3060000-3062005
每行输出一个序列。tr '\n' ','
将其输入的所有换行符转换为逗号,有效地将行连接在一起。sed -r 's/(.*),$/http:\/\/x.y.z\/\1.mp3/'
从其输入中删除尾随逗号并将其嵌入到字符串中http://x.y.z/\1.mp3
,替换\1
. 请注意,字符串中的所有斜杠都必须用反斜杠转义。 归档时间: |
|
查看次数: |
1302 次 |
最近记录: |