2016-08-13 50 views
-1

的我有一個包含文件如下3個文件夾:處理上百條輸入文件使用AWK

  1. Folder1中只包含一個名爲「數據」文件。
  2. Folder2包含超過一百個文件,它們的名稱以「part1」開頭,文本結構相同。
  3. Folder3包含超過一百個文件,它們的名字以「part2」開頭,文本結構相同。

我創建使用AWK是作爲輸入的folder1從文件,只有1個文件從文件夾2和folder3 只有1文件一個程序,它工作得很好。

現在我想給所有的文件夾中的所有文件作爲輸入,因此,我需要一個測試方法知道程序已經完成從前2個文件(part1 * + part2 *)和將開始處理下一個,以重新設置新處理的所有變量和數組。

程序將像這樣運行:

$ awkprogram folder1/data folder2/part1* folder3/part2* 
+0

你想要做什麼是微不足道的,但你的問題不清楚,所以有很多答案可能是正確的。您的問題向我們展示[mcve],其中包括簡潔,可測試的示例輸入(例如,您在第二和第三個目錄中提供了幾個小文件的3個目錄)和預期輸出。 –

回答

0

像這樣的事情可能?

FNR==1 {     # for every first record of every file 
    filecounter++   # count how manyth file is being processed 
} 
FNR==1 && filecounter > 2 { # once two first files has been processed 
    # reset variables  # do whatever 
} 
+0

謝謝你的回覆。其實這是一個好主意,但它可能只適用於2nd 2文件而不適用於3rd,4th ..也許類似於:'FNR == 1 && FILENAME〜/ part/{#reset variables}' – DaGuru

+0

當然,使用文件名將是最好的,但你的問題有點不清楚:_他們的名字以「part1」[和]「part2」_和_has _has從頭兩個文件(part1 * + part2 * )_。 –

+1

僅供參考GNU awk內置'ARGIND'內建函數,用'filecounter'完成你正在做的事情。 –