【问题标题】:gawk - preprocess files with dynamic extensionsgawk - 预处理具有动态扩展名的文件
【发布时间】:2020-01-02 16:53:52
【问题描述】:

我开始修补 gawk 的动态扩展,我想为 awk 将要操作的文件实现一个预处理器。具体来说,我想在将 gzip 压缩文件作为参数传递给 gawk 时对其进行解压缩。例如。调用将是这样的:

awk -f myscript.awk file1.gz file2.gz file3.gz

myscript.awk 会以某种方式调用动态扩展来预处理每个输入文件并在将内容输入 awk 的模式操作语句之前对其进行解压缩。动态扩展是否能够进行这种预处理?它会是什么样子?

稍后,我想创建一个类似的扩展程序,用于在传递给 awk 之前解码文件、解密文件等。对于这些任务,我通常会预处理文件,然后通过管道传输到 awk 或类似文件中,但总是有缺点。看来如果动态扩展可以预处理文件,我应该可以避免缺点。

【问题讨论】:

  • 这对您有帮助吗? How to use awk for a compressed file
  • 我不确定您是否可以在 .awk 文件中执行此操作(由带有 -f 选项的 awk 读取)。创建一个简单的.sh bash 脚本可能会更容易,该脚本将预处理文件并在该脚本中调用 awk。
  • 感谢 Corentin。我以前在项目中使用过许多类似的策略,但它们有一些我想克服的缺点(例如,失去 FILENAME 的用处、失去 FNR/NR 的用处、需要多次调用 awk 等)。但是,当我阅读扩展 API 文档时,我对它允许以我想要的方式预处理文件变得不那么乐观了。
  • 也许尝试切换到 Python,它有很多库来处理这些问题 :)
  • 我同意 Python 有能力很好地处理这些问题,但出于各种原因,我对 awk 解决方案很感兴趣。

标签: awk preprocessor


【解决方案1】:

gawk extlib 邮件列表上的一个问题得到了指向此的响应:

https://www.gnu.org/software/gawk/manual/html_node/Input-Parsers.html

看来这个应该可以了!

【讨论】:

    猜你喜欢
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多