【问题标题】:redirecting output of awk script to a file将 awk 脚本的输出重定向到文件
【发布时间】:2011-02-28 09:02:24
【问题描述】:

我创建了一个 awk 脚本。我想将其输出保存在文件中。但是

awk -f a.awk >meta.txt

不工作。有人能告诉我为什么会这样吗? 谁能建议哪个命令最适合创建具有特定格式的文件。如果我为此目的使用 awk 可以吗?

【问题讨论】:

  • 在此处粘贴您的代码。运行“awk -f a.awk”时输出什么

标签: linux shell awk


【解决方案1】:

如果 AWK 脚本未处理文件或接收来自管道的输入,则整个脚本应位于 BEGIN 块中。

BEGIN { print "foo"
        print "bar"
        while (a < c) a+=b
        print a, b, c
}

【讨论】:

    【解决方案2】:

    你给 awk 任何输入吗?如果它坐在那里什么都不做并且你按 ^D 并且它结束了你没有在 STDIN 上给它任何东西。你的 a.awk 脚本是什么样的?

    试试:

    cat input.txt | awk -f a.awk > meta.txt
    

    【讨论】:

    • cat 的无用使用。 AWK 接受输入文件名作为参数。
    【解决方案3】:

    awk 需要输入。通过命令管道一些数据,例如:

    ls -l | awk -f a.awk > meta.txt
    

    或者:

    awk -f a.awk -- somefile.with.input > meta.txt
    

    【讨论】:

      【解决方案4】:

      当您使用 -f 调用 awk 脚本时,请确保包含要处理的文件名。忽略它是常见的错误

      awk -f a.awk [filename] > output.txt
      

      或者,如果您的 awk 脚本设计为接收标准输入,请确保您正确地将标准输入传递给它。例如

      some command | awk -f a.awk
      

      【讨论】:

      • 实际上我在另一个脚本中使用它,所有输入都是由该脚本提供的,所以没有输入文件
      • 我想在脚本的特定位置使用这个awk脚本,所以它是脚本的一部分。
      【解决方案5】:
      script -a -c "awk -f a.awk" meta.txt
      

      【讨论】:

      • Script 为您终端上打印的所有内容制作打字稿。但是你已经知道你的错误在哪里了。
      猜你喜欢
      • 2022-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      • 1970-01-01
      相关资源
      最近更新 更多