Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Bash使用sed查找符号_Regex_Bash_Sed - Fatal编程技术网

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更新的问题