2013-11-24 33 views
0

我想要捕獲錯誤消息併發送到awk(例如,PDF文件被加密時pdftotext給出「不正確的密碼」消息),以便awk可以打印它。捕獲錯誤和管道到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.達斯

+0

您可以顯示'pdftotext' – hek2mgl

+0

@ hek2mgl file.pdf的輸出命令行錯誤:不正確的密碼 –

+0

答案能解決您的問題嗎? – hek2mgl

回答

1

這似乎是你問的:

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

你的主要問題似乎是,你必須在BEGIN段內的整個腳本而這之前執行任何輸入都被處理。

+1

This Works!格拉西亞斯 –

1

重新路由要標準錯誤重定向到標準輸出錯誤。

使用

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