【问题标题】:Using grep in linux to pipe all urls contained in an xml file to a seperate file在 linux 中使用 grep 将 xml 文件中包含的所有 url 通过管道传输到单独的文件
【发布时间】:2014-06-06 10:06:29
【问题描述】:

我有一个如下所示的 xml 文件。如何使用 grep 搜索此文件并将所有 url 传送到由新行分隔的文件中。

<menus>
    <defaultMenu>
        <group>
            <menuItem name="Example one" url="http://www.google.com">
                <menuItem name="Example Two" url="http://www.yahoo.com" />
                <menuItem name="Example Three" url="http://www.bing.com" />
            </menuItem>
        </group>
    </defaultMenu>
</menus>

例如我希望输出文件包含:

http://www.google.com
http://www.yahoo.com
http://www.bing.com

【问题讨论】:

    标签: linux grep pipe


    【解决方案1】:

    如果你想试试gnu awk(由于RS)

    awk -v RS="url" -F\" 'NR>1{print $2}' file >newfile
    http://www.google.com
    http://www.yahoo.com
    http://www.bing.com
    

    一个简单的awk

    awk -F\" '/url/{print $4}' file
    http://www.google.com
    http://www.yahoo.com
    http://www.bing.com
    

    仅当格式始终相同时才有效。

    【讨论】:

      【解决方案2】:

      通过 GNU sed,

      $ sed -rn 's/^.*url="([^"]*)".*$/\1/p' file
      http://www.google.com
      http://www.yahoo.com
      http://www.bing.com
      

      还有一个通过 GNU grep-P(perl-regex) 选项,

      $ grep -oP '(?<=url=\")[^"]*' file
      http://www.google.com
      http://www.yahoo.com
      http://www.bing.com
      

      【讨论】:

      • 你应该写下你需要gnu grep-P。 Perl 正则表达式
      【解决方案3】:

      假设您的文件 sample.html 运行以下命令以获取 sample1.html 文件中的 url

      cat sample.html | grep -o url=\".*\" | cut -d "=" -f2 > sample1.html
      

      如果你还想删除引号,那么

      cat sample.html | grep -o url=\".*\" | cut -d "=" -f2 | sed "s/\"//g" > sample1.html
      

      【讨论】:

      • 您不应该将cat 与可以像grep 一样自行读取的程序一起使用。 grep -o url=\".*\" sample.html | cut ...
      • 点击帮助行中的{}将其标记为代码。
      • 是的,同意你的观点,而不是 cat grep 只能在这里工作,太快了谢谢:)
      猜你喜欢
      • 2014-07-27
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 2011-07-17
      • 2011-06-28
      • 1970-01-01
      • 2011-01-03
      • 2016-06-11
      相关资源
      最近更新 更多