【发布时间】:2016-01-05 00:45:24
【问题描述】:
我正在开始块中设置时间戳:
BEGIN {
timestamp = strftime("%Y%m%d%H%M%S");
}
我不会在脚本的其余部分再次更新时间戳。我希望时间戳不会改变,但确实会改变。
稍后在脚本中,我将$0 打印到文件中:
FNR>1{
#do some stuff
print $0 > "/mnt/data/logs/TEST_"timestamp".csv"
...
时间戳发生变化,它会继续打印到新文件。 . .测试_1.csv,测试_2.csv。 . .
它在一个小文件上按预期工作,但是当我使用完整的数据文件时,它会打印多个文件
【问题讨论】:
-
某些东西必须在修改
timestamp。你能显示其余的代码吗?这是什么awk? -
我无法使用 500 万行的文件来复制它。
-
BEGIN 块只被调用一次,不管有多少行或文件。也许您不止一次调用脚本?
-
在您的文件中搜索单词“timestamp”,因为它在您未向我们展示的某些代码部分中被修改。如果您无法发现问题,请创建显示此行为的最小脚本并将完整的脚本发布给我们。
-
是的。我做到了@EdMorton。我只在开始块中设置了时间戳。