基本上我需要创建包含一行的多个文件,并用从循环中获取的值替换该行。也许我的小代码会比我更好解释。
#!/bin/bash
DATE=$(date +%F -d 2014-06-01)
for echo in {1..5}
do
echo "<TAG></TAG>" > output$echo.xml
done
for i in {1..5}
do
NEXT_DATE=$(date +%F -d "$DATE + $i month")
SET=$(date +%F -d "$NEXT_DATE + $i month")
sed -i "s|<TAG></TAG>|<TAG>$SET{1..5}</TAG>|" output{1..5}.xml
done
它生成了output1.xml,output2.xml ...... 我只是想办法在运行该脚本后如何在标签之间添加生成的日期值。期望的输出将是:
output1.xml包含:
"<TAG>2014-08-01</TAG>"
output2.xml包含:
"<TAG>2014-10-01</TAG>"
等等。 现在它用生成的日期值+ {1..5}替换它,如下所示:
<TAG>2014-08-01{1..5}</TAG>
我怎么能做到这一点?
答案 0 :(得分:2)
不需要两个循环或awk
。只需将日期放入第一个循环中的文件:
DATE=$(date +%F -d 2014-06-01)
for i in {1..5}
do
NEXT_DATE=$(date +%F -d "$DATE + $i month")
SET=$(date +%F -d "$NEXT_DATE + $i month")
echo "<TAG>$SET</TAG>" > output$i.xml
done