2013-10-30 64 views
0

我敢肯定,這是常見的,但我有麻煩找上谷歌什麼...更新輸出到UNIX實時

我使用Perl和我正在我的UNIX程序。在我的程序中,我打印的數字表示找到的正則表達式匹配數。反正輸出是這樣的..

1 
2 
3 
4 
5 

等。

它最終是一個相當長的名單,所以如果你想要去的頂部或底部,你所要做的輸出一噸滾動...

我的問題是如何獲得列表輸出實時更新,所以列表輸出將保持在一行。所以1更改爲2更改爲3等。

感謝您的幫助!

+0

只是好奇:你在什麼Unix? –

+0

使用類似[ncurses](http://www.gnu.org/software/ncurses/)庫的東西。 [Curses](https://metacpan.org/pod/Curses)是在Perl中使用它的一個選項。 – chepner

+0

對不起,我實際上在GNU/Linux上。我不知道如何找到我的版本或其他任何東西,但我希望有一個通用的* nix解決方案。 – BryanK

回答

2

首先,不要忘了非緩衝輸出在你的Perl有:

$|=1; 

然後嘗試:

$(tput clear); 

把光標移動到終端窗口的頂部。

嘗試鍵入:

tput clear 

到你的終端,看看是否能清除屏幕並把光標在左上角。如果沒有,請嘗試輸入:

clear 

清除屏幕並將光標移動到「Home」位置。

+0

謝謝,自動填充輸出是我需要做的。雖然我不知道如何使用'$(tput clear)'。我首先做到了:'local $ | = 1;'然後在打印輸出時使用'\ r'。 – BryanK

5

這取決於很多事情,但\r在一個字符串中應該返回光標到行的開頭。

+2

你將需要刷新你的輸出,因爲不會有'\ n'來觸發它。 '$ | = 1;'會自動刷新標準輸出。 – ikegami