捕获错误并将其导入awk

捕获错误并将其导入awk,awk,pdftotext,Awk,Pdftotext,我想捕获错误消息并发送给awk(例如,加密pdf文件时,pdftotext会给出“错误密码”消息),以便awk可以打印它 因为它是下面的命令计数pdf文件中的单词。但是,对于具有密码的文件,命令返回0计数,这与没有密码的pdf图像冲突(也返回0计数) 我被困住了 pdftotext 2>&1 file.pdf - | awk 'BEGIN {w=w+NF; if(w>=30) {print (w-1); exit}} END {print w-1}' 如果pdf文件受密码保

我想捕获错误消息并发送给awk(例如,加密pdf文件时,pdftotext会给出“错误密码”消息),以便awk可以打印它

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

我被困住了

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

要重新路由要将stderr重定向到stdout的错误

使用


这似乎就是你想要的:

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

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

您能否显示
pdftotext
@hek2mgl file.pdf命令行的输出错误:密码不正确答案解决了您的问题吗?@hek2mgl我看不出它是如何解决的would@ALvinDas我能看出它是怎样的将你试过了吗?
pdftotext -q file.pdf 2>&1 | awk '...' #Whatever post processing you do
pdftotext file.pdf - 2>&1 | awk '
    /Command Line Error:/ { print; exit}
    { w += NF }
    END { print w+0 }
'