2012-12-24 49 views

回答

0

如果您嘗試處理多個文件,則可以使用獲取文件名步驟獲取所有文件名。然後,如果文本文件很小,則可以使用「獲取文件內容」步驟將整個文件作爲一行,然後使用Java Filter或其他匹配步驟(例如RegEx)來搜索單詞。 如果您的文本文件太大,但基於行或其他格式固定(如果您使用文本文件輸出步驟,可能會出現這種情況),您可以使用文本文件輸入步驟獲取行,然後執行匹配步驟(見上文)查找該行中的單詞。然後,您可以使用「篩選行」步驟僅選擇包含單詞的那些行,然後選擇值以僅選擇文件名,然後選擇文件名上的排序行,然後選擇唯一行步驟。結果應該是其內容包含搜索詞的文件名列表。 這可能看起來像很多步驟,但Pentaho數據集成或PDI(aka Kettle)被設計成具有獨特(且非常可重用)功能的步驟流程。更小但更少的「PDI」方法是編寫用戶定義的Java類(或其他腳本)步驟來完成所有工作。此解決方案的步驟數量較少,但不易配置或可重複使用。

+0

沒有一個步驟叫獲取文件內容 – Cynosure

+0

我認爲@mattb_pdi指的是'加載文件內容在內存'。它在輸入分支上。 –

+0

是在內存中加載文件內容Step爲我工作 – Cynosure

0

如果你自己寫這些文件,那麼你不知道內容?因此,請在內存中已有的位置掃描字段。

如果您試圖查看Pentaho是否向文件寫入了錯誤,那麼您應該在輸出步驟中使用錯誤處理。

最後,PDI不是文本搜索工具。如果你真的需要這樣做,那麼可能最好的選擇是很好的老grep ..

相關問題