【问题标题】:awk - too many open files issue / date parsing [duplicate]awk - 太多打开的文件问题/日期解析[重复]
【发布时间】:2015-06-23 23:15:36
【问题描述】:

我正在尝试解析以格式化日期列开头的日志文件: 06/22/2015 00:17:59

我正在使用以下代码将其转换为 unix 时间戳:

unix="date -d\""$1" "$2"\" \"+%s\""; unix | getline timestamp;

但是,当我这样做时,awk 失败并出现以下错误:

awk: (FILENAME=/dev/fd/63 FNR=263350) fatal: cannot open pipe 'date -d"06/22/2015 00:17:59" "+%s"' (Too many open files)

有什么方法可以解决这个问题,或者以不同的方式解析日期?

【问题讨论】:

  • 我可以否决标记为重复项吗? :P 我永远不会基于此得出结论。另一个问题涉及打开的文件,这个问题是关于进程的。尽管内部 awk 可能以类似的方式工作,但用户并不清楚,我永远不会考虑这一点。我认为当您调用命令并将其通过管道传输到 getline 时,该进程将在完成后自动关闭。

标签: unix awk


【解决方案1】:

你的问题是你需要关闭你的命令:

unix="date -d\""$1" "$2"\" \"+%s\""; unix | getline timestamp; close(unix)

如果您不这样做,则会为输入文件中的每条记录打开一个新管道,这会导致您遇到的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多