我正在使用curl从网站获取html然后我只需要一个介于'standards.xml?revision ='和'& amp'之间的特定字符串。我正在使用sed这样做,但我似乎无法正确使用正则表达式并需要一些帮助。
curl website.com | sed -r 's|.*standards\.xml\?revision=([0-9]+).*|\1|'
我得到的输出是完整的HTML - 任何帮助都将不胜感激。
答案 0 :(得分:5)
你快到了。尝试将-n
选项与sed
一起使用,不要打印不匹配的数据,并将p
修饰符添加到s|||
以打印替换字符串
curl website.com | sed -n -r 's|.*standards\.xml\?revision=([0-9]+).*|\1|p'
答案 1 :(得分:2)
您可以使用grep -oP
(PCRE选项):
grep -oP 'standards\.xml\?revision=\K[0-9]+'
\K
重置匹配的文本,因此只返回部分[0-9]+
。
答案 2 :(得分:1)
curl website.com | sed -n '/xml/ {s|.*standards\.xml\?revision=([^&]+).*|\1|p;q;}'
从之前的sed [0-9] +仅当数字出现时,[^&] +更合适。 非常好用'和|为了避免问题\所以我选择它: - )