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