路漫漫其修远兮,吾将上下而求索

导航

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文件中前后有空格无所谓,中间有空格,会被分隔开

 

posted on 2021-12-09 09:20  爱在西元间  阅读(136)  评论(0编辑  收藏  举报