用shell实现,其中一个名字为ResGuard.xml,一个名字为ResGuardRN.txt,要求如下: 1、生成一个ResGuardAll.xml,把ResGuard.xml的全部内容追加到ResGuardAll.xml文件中 2、等ResGuardAll.xml有内容后,读取ResGuardRN.txt的所有内容,追加到ResGuardAll.xml中包含<issue id="whitelist" isactive="true">所在行的后面 4、log打印出ResGuardAll.xml中包含<issue id="whitelist" isactive="true">所在行的行数 3、使用xmlstarlet对ResGuardAll.xml进行格式化处理,避免出现不规范的XML标签格式
时间: 2024-03-14 12:43:53 浏览: 128
可以使用以下shell脚本实现:
```bash
#!/bin/bash
# 生成ResGuardAll.xml,将ResGuard.xml的内容追加到其中
cat ResGuard.xml > ResGuardAll.xml
# 等待ResGuardAll.xml有内容后,读取ResGuardRN.txt的所有内容,追加到ResGuardAll.xml中包含<issue id="whitelist" isactive="true">所在行的后面
while [ ! -s ResGuardAll.xml ]
do
sleep 1
done
awk '/<issue id="whitelist" isactive="true">/{print NR}' ResGuardAll.xml | read LINE_NUMBER
sed -i "${LINE_NUMBER} r ResGuardRN.txt" ResGuardAll.xml
# log打印出ResGuardAll.xml中包含<issue id="whitelist" isactive="true">所在行的行数
echo "Line number of <issue id=\"whitelist\" isactive=\"true\"> in ResGuardAll.xml: ${LINE_NUMBER}"
# 使用xmlstarlet对ResGuardAll.xml进行格式化处理,避免出现不规范的XML标签格式
xmlstarlet fo -s 2 -L ResGuardAll.xml > ResGuardAll_formatted.xml
mv ResGuardAll_formatted.xml ResGuardAll.xml
```
这个脚本实现了以下功能:
1. 首先将ResGuard.xml中的内容追加到ResGuardAll.xml文件中;
2. 然后等待ResGuardAll.xml有内容后,读取ResGuardRN.txt的所有内容,追加到ResGuardAll.xml中包含<issue id="whitelist" isactive="true">所在行的后面;
3. 使用awk命令查找ResGuardAll.xml中包含<issue id="whitelist" isactive="true">的行数,并将结果保存到LINE_NUMBER变量中;
4. 使用sed命令将ResGuardRN.txt的内容插入到ResGuardAll.xml中对应的位置;
5. 打印出ResGuardAll.xml中包含<issue id="whitelist" isactive="true">所在行的行数;
6. 使用xmlstarlet对ResGuardAll.xml进行格式化处理,避免出现不规范的XML标签格式。