Regex Bash使用sed查找符号
我正在使用Regex Bash使用sed查找符号,regex,bash,sed,Regex,Bash,Sed,我正在使用sed解析来自yahoo.finance的xml文件。该文件包含一组无趣的信息和我想要提取的所有全局股票符号。这是一个1行xml文件,包含大量股票符号,表示如下: symbol="VALUE" <?xml version="1.0" encoding="UTF-8"?> WRG.AX <!-- engine8.yql.bf1.yahoo.com --> 我使用的sed如下: sed "s/.* symbol=\"\(.*\)\".*/\1/" list_s
sed
解析来自yahoo.finance的xml文件。该文件包含一组无趣的信息和我想要提取的所有全局股票符号。这是一个1行xml文件,包含大量股票符号,表示如下:
symbol="VALUE"
<?xml version="1.0" encoding="UTF-8"?>
WRG.AX
<!-- engine8.yql.bf1.yahoo.com -->
我使用的sed
如下:
sed "s/.* symbol=\"\(.*\)\".*/\1/" list_stocksymbols.xml >> ./tmpfile.txt
我的输出如下所示:
symbol="VALUE"
<?xml version="1.0" encoding="UTF-8"?>
WRG.AX
<!-- engine8.yql.bf1.yahoo.com -->
全局标志,但它不起作用:/
**xml文件提取**
<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="215" yahoo:created="2014-08-22T09:05:59Z" yahoo:lang="en-US">
<results><industry id="112" name="Agricultural Chemicals">
<company name="Adarsh Plant Protect Ltd" symbol="ADARSHPL.BO"/>
<company name="Agrium Inc" symbol="AGU.DE"/><company name="Agrium Inc" symbol="AGU.TO"/>
<company name="Agrium Inc." symbol="AGU"/>
<company name="Aimco Pesticides Ltd" symbol="AIMCO.BO"/>
<company name="American Vanguard Corp." symbol="AVD"/>
。。。等等该文件仅在1行中,格式与上面不同
**perl正则表达式尝试**
perl -nle'print $& if m{(?<=symbol=")[^"]+}' list_stocksymbols
perl-nle'print$&if m{(?)?
这适用于所有不支持Perl
的grep
版本(如Mac OS X中所示)。也可以仅使用sed:
sed 's/.*symbol=\"//;s/\".*//' yahoo.txt
它可能不起作用,因为您使用贪婪的*
。请尝试使用*?
@TimZimmermann再次写出完整的文件。遗憾的是,不是解决方案您可以将XML文件的一部分添加到您的问题中吗?sed regex无法识别非贪婪的量词?
@TimZimmermann更新的问题