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