Share via


sort

讀取輸入、排序資料,並將結果寫入畫面、檔案或其他裝置。

語法

sort [/r] [/+<N>] [/m <kilobytes>] [/l <locale>] [/rec <characters>] [[<drive1>:][<path1>]<filename1>] [/t [<drive2>:][<path2>]] [/o [<drive3>:][<path3>]<filename3>]

參數

參數 描述
/r 反向排序順序 (也就是說,從 Z 到 A 排序,以及從 9 到 0 排序)。
/+<N> 指定字元位置編號,其中 sort 將開始每個比較。 N 可為任何有效的整數。
/m <kilobytes> 指定要用於以 KB 為單位排序的主要記憶體數量。
/l <locale> 覆寫系統預設地區設定所定義的字元排序順序 (也就是安裝期間選取的語言和國家/地區)。
/rec <characters> 指定記錄或輸入檔行中的字元數上限 (預設值為 4,096,最大值為 65,535)。
[<drive1>:][<path1>]<filename1> 指定要排序的檔案。 如果未指定檔案名稱,則會排序標準輸入。 指定輸入檔的速度比像標準輸入重新導向相同的檔案更快。
/t [<drive2>:][<path2>] 如果資料不符合主要記憶體,指定用來保存 sort 命令工作記憶體的目錄路徑。 根據預設,系統會使用系統暫存目錄。
/o [<drive3>:][<path3>]<filename3> 指定要儲存排序輸入的檔案。 如果未指定,資料會寫入標準輸出。 指定輸出檔案的速度比將標準輸出重新導向至相同的檔案更快。
/unique 只傳回唯一的結果。
/? 在命令提示字元顯示說明。

備註

  • 根據預設,比較會從每一行的第一個字元開始。 /+ 命令列選項會從 N 所指定的字元開始比較。例如,/+3 表示每個比較應該從每一行的第三個字元開始。 在其他行之前,少於 N 個字元的行會定序。

  • 使用的記憶體一律至少為 160 KB。 如果指定記憶體大小,則不論可用的主要記憶體數量為何,都會針對排序使用確切的指定數量 (必須至少為 160 KB)。

  • 如果未指定任何大小,則預設的最大記憶體大小是可用主要記憶體的 90%,否則就是主要記憶體的 45% (如果輸入和輸出都是檔案)。 預設設定通常會提供最佳效能。

  • 目前,預設地區設定的唯一替代方案是 C 地區設定,其速度比自然語言排序更快 (它會根據其二進位編碼來排序字元)。

  • 您可以使用直立線符號 (|) 將輸入資料從另一個命令導向至 sort 命令,或將排序輸出導向至另一個命令。 您可以使用重新導向符號 (<>) 來指定輸入和輸出檔案。 您可以更快速且更有效率 (特別是使用大型檔案時) 直接指定輸入檔 (如命令語法中的 filename1 所定義),然後使用 /o 參數指定輸出檔案。

  • sort 命令不會區分大寫和小寫字母,而且檔案大小沒有限制。

  • 排序程式會使用對應至地區/國家程式代碼和代碼頁設定的定序序列資料表。 大於 ASCII 程式代碼 127 的字元會根據 Country.sys 檔案中的資訊,或在 Config.nt 檔案中 country 命令指定的替代檔案中排序。

  • 如果排序符合記憶體大小上限 (如預設設定或如 /m 參數所指定),則會在單一傳遞中執行排序。 否則,排序會以兩個不同的排序和合併傳遞來執行,而兩個傳遞所使用的記憶體數量相等。 執行兩次傳遞時,部分排序的資料會儲存在磁碟上的暫存檔案中。 如果記憶體不足,無法以兩個階段執行排序,則會發出執行階段錯誤。 如果使用 /m 命令列選項來指定比真正可用的更多記憶體,可能會發生效能降低或執行階段錯誤。

範例

  • 若要依反向順序排序和顯示名為 expenses.txt 檔案中的行,請輸入:

    sort /r expenses.txt
    
  • 若要搜尋名為 maillist.txt 大型檔案中的文字 Jones,並使用直立線 (|) 來排序搜尋結果,以將 find 命令的輸出導向 sort 命令,請輸入:

    find Jones maillist.txt | sort
    

    此命令會產生包含指定文字的已排序行清單。

  • 若要依字母順序排序鍵盤輸入並在畫面上顯示結果,您可以先使用不含參數的 sort 命令,請輸入:

    sort
    

    然後輸入您想要排序的文字,然後在每一行結尾按 ENTER 鍵。 當您完成輸入文字時,請按 CTRL+Z,然後按 ENTER 鍵。 sort 命令會依字母順序排序顯示您輸入的文字。