如何使用ksh脚本

时间:2015-06-24 16:51:48

标签: xml bash unix properties ksh

条件:

  1. 我无法使用任何XML解析器工具,因为我没有权限,只读

  2. 我的xmllint版本不支持xpath,我无法更新,只读

  3. 我没有xmlstarlet,无法安装

  4. 我的选项仅限于String处理。

    输入参数将由用户提供,它将是块的名称。

    所以,

    让我们假设

    NAME=${USER_INPUT}
    

    我们将使用$NAME作为参数来搜索将被搜索的xml块。

    如何在像这样的xml文件中转换像这样的通用xml块:

    <block>
     <name>Bob</name>
     <address>USA</address>
     <email>bob@dogs.com</email>
     <phone>1234567</phone>
    </block>
    
    <block>
     <name>Peter</name>
     <food>France</address>
     <cell>peter@pizza.com</cell>
     <drinks>Coke</drinks>
     <car>Honda</car>
     <bike>Mountain bike</bike>
    </block>
    

    所以我想在这里实现的是获得满足我搜索的xml块,

    例如NAME=Bob;

    脚本的输出应采用属性文件格式

    name=Bob
    address=USA
    email=bob@dogs.com
    phone=1234567
    

    这里要考虑的一点是每个块的xml格式是不同的。每个xml块的节点都不相同。

1 个答案:

答案 0 :(得分:1)

使用bash和GNU sed:

#!/bin/bash

NAME="Bob"
sed -n '/name>'${NAME}'/,/<\/block>/s/.*<\(.*\)>\(.*\)<.*/\1=\2/p' file.xml

输出:

name=Bob
address=USA
email=bob@dogs.com
phone=1234567