0

我想捕获错误消息并发送到 awk(例如,pdftotext 在加密 pdf 文件时给出“密码错误”消息)以便 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.达斯

4

2 回答 2

1

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

采用

pdftotext -q file.pdf 2>&1 | awk '...' #Whatever post processing you do
于 2013-11-24T09:30:19.900 回答
1

这似乎是你所要求的:

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

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

于 2013-11-26T03:18:16.447 回答