使用shell脚本将文本附加到XML文件中的节

时间:2017-12-21 20:51:30

标签: shell

我在Linux中有一个配置文件(xml),我正在尝试将其他学生添加到student_names Configuration_item(如果不存在)
例如,如果我得到唐纳德,我不需要做任何事情,因为它有 如果我 Tom 我需要添加它,因为它不存在

status

1 个答案:

答案 0 :(得分:3)

继续使用fn解析器会更好,但是XML可以在bash文件很简单的情况下执行此操作。不是一个很好的解决方案,但它可以做到这一点。

xml

该脚本逐行读取并解析输入#!/bin/bash infile="$1" name="$2" while IFS='' read -r line || [[ -n "$line" ]]; do case $line in *students_names*) case $line in *"$name"\;*|*"$name"\"*) echo "$line" ;; *) echo "${line//Value=\"/Value=\"$name;}" ;; esac ;; *) echo "$line" ;; esac done < "$infile" 文件。它应用变量扩展以匹配目标行(包含example.xml)并确定它是否包含Key="students_names"。如果与$name不匹配,则添加它,否则打​​印该行。

示例1

$name

<强> 输出

./add_value.sh example.xml Todd

示例2

<Configuration_item Key="foo" Value="bar"/> <Configuration_item Key="students_names" Value="Todd;Marry;Alen;Donald"/> <Configuration_item Key="foo2" Value="baz/>

<强> 输出

./add_value.sh example.xml Toddy