使用sed和Here documents方法替换文件内容的思路如下:
1. 截取test.xml文件从起始行到特定行,保存到临时文件tmp。
2. 根据变量值扩展要添加的内容,附加写入tmp文件。
3. 从test.xml文件截取从特定行到结束行,附加写入tmp文件。
4. 将tmp文件移动并覆盖test.xml文件。
示例代码:
#!/bin/sh
$hostnames="host1,host2,host3..."
$paragraph="many_strings"
sed-n'1,/^/p'test.xml>tmp
cat<>tmp
forhnamein`echo"$hostnames"|tr','''`
do
insert$hname
insert$paragraph
done
EOF
sed-n'/^<\/abcdef>/,$p'test.xml>>tmp
mvtmp/test.xml
注意:
1) for a in b 结构中,b集合里的内容必需空格分隔。因此,这里使用tr命令将逗号分隔改为空格分隔。
2) 第二个EOF必需顶格写,前面不能有空格。
温馨提示:答案为网友推荐,仅供参考