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