我已將bash管道中的數據源從cat ${file}
更改爲cat file_${part_number}
,因爲預處理導致${file}
被截斷爲2GB,所以拆分輸出消除了預處理問題。然而,在測試這種變化時,我無法弄清楚如何讓Bash繼續爲我用來測試管道的一些基本操作採取相同的行動。Bash管道和Shell擴展
我原來的管道是:
cat giantfile.json | jq -c '.' | python postprocessor.py
與原來的管道,如果我測試的變化postprocessor.py
或預處理程序,我想只是測試我的變化有幾個項目從giantfile.json
我可以使用head
和tail
。像這樣:
cat giantfile.json | head -n 2 - | jq -c '.' | python postprocessor.py
cat giantfile.json | tail -n 3 - | jq -c '.' | python postprocessor.py
新管道修復該問題的預處理器:
cat file_*.json | jq -c '.' | python postprocessor.py
這工作得很好,因爲每個文件都被輸出最終會。但是我不想等待每個測試5-10分鐘。我試着用頭部的前兩行輸入進行測試。
cat file_*.json | head -n 2 - | jq -c '.' | python postprocessor.py
猛砸坐在那裏,遠遠超過它應該工作,所以我嘗試:
cat file_*.json | head -n 2 - | jq -c '.'
而且我的問題是清楚的。 Bash正在輸出所有文件的內容,就好像磁頭不在那裏一樣,因爲每個文件現在都有1行數據。我從來沒有必要用bash來做這件事,而且我很尷尬。
爲什麼沒有擊行爲這種方式,和如何我重寫我的小bash命令管道的工作它曾經的樣子,讓我選擇的第一個/最後ñ線數據與測試工作?
你釘了它。事實證明,我在預處理過程中有一個步驟,從它所處理的文件末尾剝離了直線。這不是隻有一個文件的問題。但是當它是每個文件的一行數據時會引起我的問題。 – Techdragon