linux - 在 linux 中使用 grep 将 xml 文件中包含的所有 url 传输到单独的文件

标签 linux grep pipe

我有一个如下所示的 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

最佳答案

如果您想尝试 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

这仅在格式始终相同时有效。

关于linux - 在 linux 中使用 grep 将 xml 文件中包含的所有 url 传输到单独的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24079254/

相关文章:

c - C 读取字符串中的字符数

c++ - 使用 C++ 创建 Linux 管道

C 进程编程

linux - 找不到 root.crt postgresql

linux - 等待后台的所有子进程完成并退出并返回最后一个子进程的代码

Python - 捕获所有信号

sql-server - 如何grep SQL Server存储过程?

command-line - 如何使 findstr 显示内联的完整文件路径?

bash - xargs grep 忽略不满足查询的文件

linux - Linux 中的 pipe() 函数