Linux awk:如何使用变量值

Linux awk:如何使用变量值,linux,shell,awk,scripting,Linux,Shell,Awk,Scripting,我想声明一个名为variableToUse的变量,它保存文件名路径。 我想在文件名后面加上今天的日期。 下面的代码位于myAWK.awk $bash: cat myAWK.awk BEGIN{ today="date +%Y%m%d"; variableToUse=/MainDir/MainDir1/MainDir2/OutputFile_today.xml } /<record / { i=1 } i { a[i++]=$0 }

我想声明一个名为
variableToUse
的变量,它保存文件名路径。 我想在文件名后面加上今天的日期。 下面的代码位于
myAWK.awk

$bash: cat myAWK.awk
    BEGIN{
    today="date +%Y%m%d";
    variableToUse=/MainDir/MainDir1/MainDir2/OutputFile_today.xml
    }

    /<record / { i=1 }
    i { a[i++]=$0 }
    /<\/record>/ {
        if (found) {
             print a[i] >> variableToUse
        }
    }
$bash:cat myAWK.awk
开始{
今天=“日期+%Y%m%d”;
variableToUse=/MainDir/MainDir1/MainDir2/OutputFile_today.xml
}
/>多变的
}
}
我在
OutputFile\u today.xml中遇到语法错误

如何使用变量值?

  • 你应该正确地引用变量
示例

$ awk 'BEGIN{variableToUse="/MainDir/MainDir1/MainDir2/OutputFile_today.xml"; print variableToUse}'
/MainDir/MainDir1/MainDir2/OutputFile_today.xml
$ awk 'BEGIN{today="date +%Y%m%d";variableToUse="/MainDir/MainDir1/MainDir2/OutputFile_"strftime("%Y%m%d")".xml"; print variableToUse}'
/MainDir/MainDir1/MainDir2/OutputFile_20160205.xml
  • 要获取当前日期,可以使用
示例

$ awk 'BEGIN{variableToUse="/MainDir/MainDir1/MainDir2/OutputFile_today.xml"; print variableToUse}'
/MainDir/MainDir1/MainDir2/OutputFile_today.xml
$ awk 'BEGIN{today="date +%Y%m%d";variableToUse="/MainDir/MainDir1/MainDir2/OutputFile_"strftime("%Y%m%d")".xml"; print variableToUse}'
/MainDir/MainDir1/MainDir2/OutputFile_20160205.xml

让您的awk脚本如下所示:

BEGIN {
   today="date +%Y%m%d";
   variableToUse="/MainDir/MainDir1/MainDir2/OutputFile_" today ".xml"
}

/<record / { i=1 }
i { a[i++]=$0 }
/<\/record>/ {
    if (found) {
         print a[i] >> variableToUse
    }
}

并从
BEGIN
块中删除
today=
行。

上述代码打印
/MainDir/MainDir1/MainDir2/OutputFile\u today.xml
。但是我想要,
/MainDir/MainDir1/MainDir2/OutputFile_20160205.xml
@user2488578抱歉,我只是在创建变量时注意到了错误。使用
strftime