捕获错误并导入awk



我想捕获错误消息并发送给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。Das

这似乎就是您想要的:

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

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

要重新路由错误,需要将stderr重定向到stdout。

使用

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

相关内容

  • 没有找到相关文章

最新更新