shell相同xml批量创建替换脚本.sh
在Linux或Windows下均可(Windows需要安装Git并配置环境变量)
下面是Linux环境的操作
目录下是这些文件:1.sh、07.安全计算环境-服务器和终端-test123.xml、1
新建1.sh文件,内容如下:
#!/bin/bash # Author:Jasy # Version:2.0 # 批量从1文件取资产名并复制和命名新的xml文件,并同步替换xml文件里的资产名 # 注意:1文件一行一个名字,中间不要有空格,并set ff=unix,源xml文件里无结果记录的实际关联资产为4个空格,可以一起替换掉 for name in `cat 1`; do cp 07.安全计算环境-服务器和终端-test123.xml 07.安全计算环境-服务器和终端-$name.xml sed -i "s%test123%$name%g" 07.安全计算环境-服务器和终端-$name.xml sed -i "s% <\/实际关联资产>%$name<\/实际关联资产>%g" 07.安全计算环境-服务器和终端-$name.xml done
07.安全计算环境-服务器和终端-test123.xml
作为源xml文件,需要如下设置:
1、xml结果记录里涉及到的资产名称统一为test123
2、实际关联资产字段的中间为空(默认就是4个空格)
1文件:
使用./1.sh执行,大概几秒钟就可以执行完成
随便找个打开看下,已经替换完成
PS:在windows环境下运行,需要安装Git环境,配置好后直接双击sh文件或在命令行下输入sh文件名即可
在调试脚本出现过几个报错,做个记录:
1、当sed中有变量时,sed -i后面需要用两个双引号"括起来(单引号报错)
2、替换后的变量老是有^M和其他多余字符,是因为windows复制过去的文件是默认dos格式,需要set ff=unix即可
3、sh文件有乱码也类似,从windows拷过去的执行会报错,cat看是乱码,基本是中文乱码,需要改成utf-8,执行 iconv -f gbk -t utf8 2.sh >3.sh 这个命令,生成3.sh即可
4、Windows环境运行的时候会经常出现生成的xml文件名的末尾有空格,还是因为1文件没有设置成unix格式,在notepad++右下角可以改
5、貌似1文件中前后有空格无所谓,中间有空格,会被分隔开
MU5735 R.I.P