【问题标题】:awk timestamp set in begin block在开始块中设置的 awk 时间戳
【发布时间】: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。我只在开始块中设置了时间戳。

标签: awk strftime


【解决方案1】:

好的,伙计们,我找到了问题所在。我正在调用一个我认为不相关的辅助 awk 脚本。很抱歉最初没有包括在内。因此,当我在该脚本上调用记录器函数时,它会更新时间戳变量。我通过简单地将脚本上的时间戳更改为 timestamp1 来解决此问题。

感谢所有回复并忍受我缺乏经验的人!

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 2021-01-26
    • 1970-01-01
    • 2020-11-15
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多