【问题标题】:capture error and pipe into awk捕获错误并通过管道传输到 awk
【发布时间】:2013-11-26 11:18:16
【问题描述】:

我想捕获错误信息并发送到 awk(例如,当 pdf 文件被加密时,pdftotext 给出“密码错误”的信息)以便 awk 可以打印。

因为它是下面的命令计算 pdf 文件中的单词。但是对于有密码的文件,该命令返回 0 个计数,这与没有密码的 pdf 图像冲突(也返回 0 个计数)。

pdftotext -q file.pdf - | awk 'BEGIN {w=w+NF; if(w>=30) {print (w-1); exit}} END {print w-1}'

我被困在了

pdftotext 2>&1 file.pdf - | awk 'BEGIN {w=w+NF; if(w>=30) {print (w-1); exit}} END {print w-1}'

如果 pdf 文件受密码保护,那么“命令行错误:密码不正确”会通过管道传输到 awk。我如何打印该短语? (在这种情况下不会有字数统计。)

A.达斯

【问题讨论】:

  • 你能显示pdftotext的输出吗
  • @hek2mgl file.pdf 命令行错误:密码错误
  • 这个答案能解决你的问题吗?
  • @hek2mgl 我看不出会怎样
  • @ALvinDas 我知道它会怎样。你试过了吗?

标签: awk pdftotext


【解决方案1】:

这似乎是您要的:

pdftotext file.pdf - 2>&1 | awk '
    /Command Line Error:/ { print; exit}
    { w += NF }
    END { print w+0 }
'

您的主要问题似乎是您将整个脚本放在 BEGIN 部​​分中,并且在处理任何输入之前执行。

【讨论】:

    【解决方案2】:

    要重新路由错误,您希望将 stderr 重定向到 stdout。

    使用

    pdftotext -q file.pdf 2>&1 | awk '...' #Whatever post processing you do
    

    【讨论】:

      猜你喜欢
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 2019-09-05
      相关资源
      最近更新 更多