相同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即可

奶奶问孙子:4+1等于几 孙子说:等于6-1。 奶奶说:你明明知道答案,为什么不说? 孙子说:年轻人不讲5的……..
原文地址:https://www.cnblogs.com/jasy/p/15665537.html