如何在 Linux 中隨機排列檔案中的行


在 Linux 中,隨機排列檔案中的行通常很有用。當處理大型資料集或執行某些需要檔案行以隨機順序排列的操作時,這很有幫助。在本文中,我們將討論在 Linux 中隨機排列檔案中的行的不同方法。

使用“shuf”命令

“shuf”命令是一個 Linux 實用程式,可用於隨機打亂檔案中的行。要使用“shuf”命令,您需要在系統上安裝它。大多數 Linux 發行版都預裝了“shuf”,但如果您的系統上未安裝,則可以使用包管理器安裝它。

要使用“shuf”命令隨機排列檔案中的行,您可以使用以下語法:

shuf file.txt > randomfile.txt

此命令將打亂“file.txt”中的行並將輸出儲存到“randomfile.txt”。

您還可以使用“-n”選項僅從檔案中打亂特定數量的行。例如,以下命令將僅打亂檔案的頭 10 行:

shuf -n 10 file.txt > randomfile.txt

使用“sort”命令

“sort”命令是 Linux 中一個強大的實用程式,可用於以各種方式對資料進行排序,包括以隨機順序排序。要使用“sort”命令隨機排列檔案中的行,您可以使用以下語法:

sort -R file.txt > randomfile.txt

此命令將打亂“file.txt”中的行並將輸出儲存到“randomfile.txt”。

使用“awk”命令

“awk”命令是一個功能強大的文字處理實用程式,可用於執行各種文字操作。要使用“awk”命令隨機排列檔案中的行,您可以使用以下語法:

awk 'BEGIN {srand()} {print rand(), $0}' file.txt | sort -n | cut -d ' ' -f2- > randomfile.txt

此命令使用“awk”中的“rand()”函式為檔案中的每一行生成一個隨機數,然後根據生成的隨機數對行進行排序。“cut”命令用於從輸出中刪除隨機數。

使用“perl”命令

“perl”命令是一種功能強大的指令碼語言,可用於執行各種文字操作。要使用“perl”命令隨機排列檔案中的行,您可以使用以下語法:

perl -e 'print rand()," $_" for <>;' file.txt | sort -n | cut -d ' ' -f2- > randomfile.txt

此命令使用“perl”中的“rand()”函式為檔案中的每一行生成一個隨機數,然後根據生成的隨機數對行進行排序。“cut”命令用於從輸出中刪除隨機數。

使用“python”命令

“python”命令是一種功能強大的指令碼語言,可用於執行各種文字操作。要使用“python”命令隨機排列檔案中的行,您可以使用以下語法:

python -c 'import random,sys; lines=sys.stdin.readlines(); random.shuffle(lines); print("".join(lines))' < file.txt > randomfile.txt

此命令使用“python”中的“random.shuffle()”函式來打亂檔案中的行。

以下是一些在 Linux 中隨機排列檔案中的行的其他提示和注意事項:

  • 在隨機排列行之前,最好備份原始檔案。這可以幫助您避免在隨機化過程中出現問題時導致資料丟失或損壞。

  • 某些命令可能需要其他選項或引數才能與某些檔案格式或編碼正確配合使用。例如,如果您的檔案包含非 ASCII 字元或使用特定編碼,則可能需要使用適當的命令選項指定編碼。

  • 如果需要隨機排列多個檔案中的行,可以使用萬用字元或正則表示式來匹配檔案。例如,以下命令將隨機排列當前目錄中所有副檔名為“.txt”的檔案中的行:

shuf *.txt > randomfile.txt
  • 如果需要重複隨機排列檔案中的行,可以使用 shell 指令碼或命令別名來自動執行此過程。這可以為您節省時間和精力,尤其是在您需要頻繁執行操作時。

  • 在隨機排列檔案中的行時,請記住,如果輸入檔案具有特定的結構或模式,則輸出可能不是真正的隨機的。例如,如果檔案中的行已經按特定方式排序或分組,則隨機化可能不會在行之間均勻分佈。為了避免這種情況,您可以預處理輸入檔案以刪除可能影響隨機化的任何模式或結構。

  • 最後,值得注意的是,根據上下文和手頭的具體任務,隨機排列檔案中的行並非總是必要的或有用的。在某些情況下,保留行的原始順序可能比隨機排列它們更重要或更有資訊量。因此,在隨機排列檔案中的行之前,請務必考慮這樣做帶來的影響和潛在好處,並相應地選擇合適的方法。

結論

隨機排列檔案中的行是一種簡單但強大的技術,可用於 Linux 中的各種場景。在本文中,我們討論了幾種使用不同的命令(如“shuf”、“sort”、“awk”、“perl”和“python”)來隨機排列檔案中的行的方法。每個命令都有其自身的優缺點,命令的選擇取決於具體的用例。

例如,“shuf”命令是隨機排列檔案中的行最簡單且最直接的方法。它也非常快速高效,尤其是在處理大型檔案時。另一方面,“awk”和“perl”命令功能更強大且更靈活,它們可用於執行更復雜的文字操作以及行隨機化。

總之,隨機排列檔案中的行是 Linux 中一項有用的技術,可用於以各種方式操作和分析資料。透過使用本文中討論的不同命令,您可以輕鬆地隨機排列檔案中的行並獲得所需的結果。

更新於:2023-03-24

2K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.