我想捕获错误消息并发送到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。如何打印该短语? (在这种情况下,没有字数。)
一个。 DAS
答案 0 :(得分:1)
要重新路由您想要将stderr重定向到stdout的错误。
使用
pdftotext -q file.pdf 2>&1 | awk '...' #Whatever post processing you do
答案 1 :(得分:1)
这似乎是你要求的:
pdftotext file.pdf - 2>&1 | awk '
/Command Line Error:/ { print; exit}
{ w += NF }
END { print w+0 }
'
你的主要问题似乎是你的整个脚本都在BEGIN部分内,并且在处理任何输入之前已经执行了。