使用curl,grep和sed从HTML中提取数据

时间:2014-06-01 17:06:41

标签: bash curl sed grep

我正在尝试学习一些终端命令,并看到这个抓取最新谷歌涂鸦的链接并将其复制到剪贴板:

$ curl http://www.google.com/doodles#oodles/archive |
grep -A5 'latest-doodle on' | grep 'img src' |
sed s/.*'<img src="\/\/'/''/ | sed s/'" alt=".*'/''/ | pbcopy

我尝试做类似的事情 - 这个命令应该将当天的单词复制到剪贴板中:

curl "http://www.merriam-webster.com/word-of-the-day/" |
grep -A5 'main_entry_word' | sed s/.*'<strong class="main_entry_word">'/''/ |
sed s/'</\strong>.*'/''/ | pbcopy

我收到一条错误消息:

sed: 1: "s/</\strong>.*//": bad flag in substitute command: '/'

我不确定我在做什么,我在其他网站上尝试了一些教程,但我无法理解。我认为主要的问题是我不明白大多数'sed'命令的作用。

有人能帮助我吗?

2 个答案:

答案 0 :(得分:2)

如果我理解您的要求,您希望在<strong...class="..."></strong>之间提取文字,我会使用单个grep来保存您的grep|grep|sed|sed...

也使用curl的-s选项:

kent$  curl -s "link"|grep -Po '<strong\s+class="main_entry_word">\K.*?(?=</strong>)'

输出:

palmy

答案 1 :(得分:1)

sed s/'<\/strong>.*'/''/

sed s@'</strong>.*'@''@