使用更改

时间:2015-05-06 17:49:41

标签: bash awk sed

基本上我需要创建包含一行的多个文件,并用从循环中获取的值替换该行。也许我的小代码会比我更好解释。

#!/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>

我怎么能做到这一点?

1 个答案:

答案 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