我应该在cURL-googleapi上使用什么sed语法
我想得到以下数据:AAPL 在以下cURL上使用sed:我应该在cURL-googleapi上使用什么sed语法,curl,sed,Curl,Sed,我想得到以下数据:AAPL 在以下cURL上使用sed:cURL-s”http://www.google.com/ig/api?stock=AAPL“ GoogleAPI给了我一个XML答案,包含APPL的标签是,即 是否可以使用一个sed来提供来自2个XML标记的数据 我正在运行MAC OS X 10.8.2,我对Unix bash/shell命令非常陌生。最好使用shell命令(由libxml安装)和表达式。而不是sed。它是一个perl一行代码,分成几行,并使用XML解析器XML::Twi
cURL-s”http://www.google.com/ig/api?stock=AAPL“
GoogleAPI给了我一个XML答案,包含APPL的标签是
,即
是否可以使用一个sed来提供来自2个XML标记的数据
我正在运行MAC OS X 10.8.2,我对Unix bash/shell命令非常陌生。最好使用shell命令(由libxml安装)和表达式。而不是
sed
。它是一个perl
一行代码,分成几行,并使用XML解析器XML::Twig
:
perl-5.14.2 -MXML::Twig -e '
BEGIN {
sub process { printf qq|%s\n|, $_[1]->print }
}
XML::Twig->new(
twig_handlers => {
symbol => \&process,
last => \&process
}
)->parse( qx{curl -s "http://www.google.com/ig/api?stock=AAPL"} )
'
它产生:
<symbol data="AAPL"/>
<last data="439.88"/>
这有点冗长——您可以使用GNU sed来减少它——但这应该可以做到:
curl -s "http://www.google.com/ig/api?stock=AAPL" |
grep -Eo '<(symbol|last) [^>]*>' |
sed -e 's/.*data="//' -e 's/".*//'
哪两个标签?期望的输出和样本输入是什么?不管怎么说,答案是:是的,但是
sed
不是最好的工具。XPath查询将以更简单、更可靠的方式获得结果。查看命令行工具的xmlstarlet
。现在让我们使用sed。谢谢,稍后我们将查看它们。但现在我想使用sed。下面是cURL的som示例输出。我想使用sed来显示这两个标签中的数据;此注释太长,如果与此处相关,输出应该是此问题或其他问题的一部分。但应该可以使用sed。我就是搞不懂语法
curl -s "http://www.google.com/ig/api?stock=AAPL" |
sed -e 's/.*<symbol data="\([^>]*\)"\/>.*<last data="\([^>]*\)"\/>.*/\1 \2/'