微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

相同xml批量创建替换脚本.sh

新建1.sh文件,最好是在linux环境下,windows拷过去带中文的会乱码 

#!/bin/bash
# Author:Jasy
# 批量从1文件取主机名作变量并复制和命名新的xml文件,替换xml文件里的空值实际关联资产为该主机名,替换xml记录里的某某服务器为该主机名服务器
# 注意:1文件一行一个名字,并set ff=unix,源xml文件里的实际关联资产需为空(4个空格),源xml记录的某某服务器统一为1服务器

for name in `cat 1`; do
  cp 07.安全计算环境-服务器和终端-1.xml 07.安全计算环境-服务器和终端-$name.xml
  sed -i "s%    <\/实际关联资产>%$name<\/实际关联资产>%g" 07.安全计算环境-服务器和终端-$name.xml
  sed -i "s%1服务器%$name服务器%g" 07.安全计算环境-服务器和终端-$name.xml
done

目录下是这些文件

 1.sh

 

 

 07.安全计算环境-服务器和终端-1.xml作为源xml文件,需要如下设置:

1、结果记录里涉及到某某服务器统一为1服务器;2、实际关联资产字段的中间为空(认就是4个空格)

1文件

 

使用./1.sh执行,大概几秒钟就可以执行完成

随便找个打开看下,已经替换完成

 

在调试脚本出现过几个报错,做个记录:

1、当sed中有变量时,sed -i 后面需要用两个双引号"括起来(单引号报错)

2、替换后的变量老是有^M和其他多余字符,是因为windows复制过去的1文件认dos格式,需要set ff=unix即可

3、sh文件有乱码也类似,从windows拷过去的执行会报错,cat看是乱码,基本是中文乱码,需要改成utf-8,执行 iconv -f gbk -t utf8 2.sh >3.sh 这个命令,生成3.sh即可

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。