[Emuelec]使xmlstartlet为gameList.xml添加sortname字段

 将gamelist.xml中的name字段中的拼音首字母索引去除后,添加到sortname字段中

## filename: addsortname.sh [gamelist.xml的路径,默认为当前路径下的gamelist.xml]
## 使用举例:./addsortname.sh /path/to/gamelist.xml
## 功能:给game元素增加sortname字段,内容为去除name中的[**]

gamelistpath="${1:-gamelist.xml}"
echo "${gamelistpath}"
# 修改编码为utf-8,以支持中文, macos请使用gsed,安装方法:brew install gsed
sed -i '1c \<?xml version="1.0" encoding="utf-8"?>' "${gamelistpath}"
# 给game元素增加sortname字段,内容为去除name中的[**]
gameList=`xmlstarlet sel -t \
--value-of '/gameList/game/name' \
--nl "${gamelistpath}"`

OLDIFS="$IFS"  #备份旧的IFS变量
IFS=$'\n' #处理游戏名中带空格的情况
# 逐个添加sortname元素
for game in ${gameList}
do
    echo "处理游戏名:"${game}
    xmlstarlet ed -L -i \
    "/gameList/game[name = \"${game}\"]/name" \
    -t elem \
    -n "sortname" \
    -v "${game%%[*}" \
    "${gamelistpath}"
done
IFS="$OLDIFS"  #还原IFS变量

如果结果出现乱码,需将gameList.xml开头设置为utf-8编码

<?xml version="1.0" encoding="utf-8"?>

xmlstartlet引用shell变量失败的问题解决办法:

Bash xmlstarlet +变量不起作用(Bash xmlstarlet + variable not work)_电脑培训

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值