2013-04-04 48 views
7

我的工作涉及很多來自超大文件的排序字段。我通常用bash中的sort命令來做到這一點。不幸的是,當我開始進行排序時,我不知道要花多長時間。我是否應該等待一秒才能顯示結果,還是應該在運行時開始處理其他問題?是否有可能在Linux中顯示排序的進度?

是否有任何可能的方法來了解排序進度有多遠或運行速度有多快?

$ cut -d , -f 3 VERY_BIG_FILE | sort -du > output 
+2

它正在'平坦'。沒有一種可靠的方法來檢測它已經發展的程度以及運行的時間。你可能可以繞過/ proc進行排序並作一些推論,但可能不會。 – 2013-04-04 15:48:43

+0

也許另一種排序例程呢?大多數排序例程(比如QuickSort)至少對排序有多大意見。 – 2013-04-04 15:59:48

回答

8

不,GNU sort不會進行進度報告。

但是,如果您使用的sort只是爲了刪除重複,你不真正關心的排序,然後有這樣做的一個more scalable way

awk '! a[$0]++' 

此寫出的第一次出現只要看到它,就可以讓你瞭解進展情況。

-4

您可以在後臺執行 你「之類的」,你會得到提示,你可以做其他的工作

$排序...... &#(&在後臺運行機構)

+3

儘管您的陳述無疑是正確的,但您的答案與問題無關。 – tink 2013-04-04 17:29:18

1

你可能想要嘗試pv,它應該能夠讓您很好地瞭解管道中吞吐量的變化。

例(未經測試)前後sort命令後注入pv獲得吞吐量的想法:

$ cut -d , -f 3 VERY_BIG_FILE | pv -cN cut | sort -du | pv -cN sort > output 

編輯:我錯過了你的sort命令的-u,所以計算行先能夠獲得百分比輸出是無效的。從我的答案中刪除了該部分。

+0

雖然'pv'是一個很好的工具,它只是給出了一個想法,如果你給它一個'-s'選項來告訴它它的總長度,我們真的有多遠。 – glglgl 2013-04-05 08:06:11

+0

@glglgl我的示例在編輯之前使用了'-s',但是因爲在排序後我們無法知道大小,所以我刪除了它。 OP要求提供一個解決方案,至少有助於確定_「它的工作速度有多快_」,這在某種程度上是「pv」的作用。 – 2013-04-05 08:26:58

相關問題