2015-05-15 29 views
2

我想要一個文本文件,併爲每行隨機化單詞/列。這些文件可能包含數百萬行,因此效率非常重要。我試過谷歌路線,但是我發現的一切都是隨機排列行而不是列。如何在Linux中隨機化文本文件的列

例如以一個簡單的文件中像這樣(我將使用數字,但他們可能是字):

111 222 333 444 555 
555 666 777 888 999 000 
000 333 555 777 

輸出可能如下:

222 111 555 444 333 
777 555 666 000 999 888 
777 333 000 555 
+0

您願意考慮哪些工具?這在python中會相當簡單。另外,在輸出的例子中,你的意思是'333'重複,沒有'222'? –

+0

是的。它的輸出應該是「222 111 555 444 333」第一行 – Ray

+0

我寧願使用Linux標準的命令,它不需要安裝額外的程序。但是,如果有一種相當高效的解決方案使用像Python這樣的語言,我會很高興。我希望能夠處理長達數百萬行的文件。 – Ray

回答

0

Perl來了救援:

perl -MList::Util=shuffle -lne 'print join " ", shuffle split' <input.txt> output.txt 
  • -l追加一個新行後print
  • -n過程由線輸入線
  • split按空白進行分割
  • shuffle輸入線(從List::Util)混洗該列表中隨機
  • join " "從列表中創建一個串,把成員之間的空間。
相關問題