我試圖在sort -m
的UNIX/Linux腳本中合併很多已排序的文件,並且我注意到sort
首先將結果寫入臨時文件,然後將其複製到目標。我對-m
的理解是,它假定文件是排序的,所以使用臨時文件是完全不必要的,並且浪費了硬盤空間和CPU週期(我在使用sort
的管道中等待排序輸出任何東西。)有沒有辦法告訴sort
合併排序文件時不使用臨時文件?或者更好的版本不?如何合併排序文件而不使用臨時文件?
確切CL的樣子:
$ sort -m -s -t '_' -k 1,1n -k 2,2n <(gunzip <file_1) [...] <(gunzip <file_n) | gzip >output
我使用sort
從GNU的coreutils 5.97。
我想是因爲'sort'被寫了一個通用的工具,他們並沒有考慮你的情況下,一些更復雜添加到程序等依靠TMP的性病排序機制文件。 ....編寫一個awk腳本可以非常容易,它循環輸入文件列表,比較每條第一行,打印一個文件中的「最低」值,從該文件獲取下一條記錄,然後比較所有再次記錄,希望打印下一個'最低'的記錄。您可能會遇到系統對打開文件的限制,但對於您編寫的任何解決方案而言,情況都是如此。首先測試4。祝你好運 – shellter