Provided by: manpages-zh_1.6.3.2-1_all bug

NAME

       lsort - 給一個列表的元素排序

總覽 SYNOPSIS

       lsort ?options? list
_________________________________________________________________

描述 DESCRIPTION

       這個命令給  list 的元素排序,返回按整理後的次序(排列)的一個新列表。lsort    命令的實現使用
       了歸併排序算法,這個算法有 O(n log   n) 性能特徵的一個穩定的排序算法。

       缺省的使用 ASCII   排序,並按升序返回結果。但是,可以在 list    的前面指定任何下列參數來控
       制排序處理(接受唯一性的縮寫):

       -ascii              字符串比較使用 ASCII (作爲)整理(collation)次序。這是缺省的。

       -dictionary         使用字典式樣的比較。除了下列兩點之外它同於  -ascii。(a)   除了作爲一個
                           tie-breaker 之外忽略大寫,(b)   如果字符串包含嵌入的數字,數字作爲整數
                           來比較而不是字符。例如,在   -dictionary      模式下,bigBoy    排序在
                           bigbangbigboy 之間,而 x10y    排序在 x9yx11y 之間。

       -integer            把列表元素轉換成整數並使用整數比較。

       -real               把列表元素轉換成浮點值並使用浮點比較。

       -command command    使用 command    作爲一個比較命令。想比較兩個元素,要求由 command    構
                           成的一個  Tcl 腳本的值,並加上兩個元素作爲(向這個過程)附加的參數。如果
                           第一個參數被認定爲小於、等於、或大於第二個參數,這個腳本應該分別返回小
                           於、等於、或大於零的一個整數。

       -increasing         按升序整理這個列表(“最小” 的項目在最先)。這是缺省的。

       -decreasing         按降序整理這個列表(“最大” 的項目在最先)。

       -index index        如果指定了這個選項,list     的每個元素自身必須是一個正確的  Tcl  子列
                           表。不是基於整個子列表來排序,lsort   將從每個子列表中提取第 index  個
                           元素並基於這個給定的元素來排序。index    允許使用關鍵字 end   來在子列
                           表的最後的元素上排序, 而 end-index sorts on a sublist  element  offset │
                           from the end 。例如,
                                  lsort -integer -index 1 {{First 24} {Second 18} {Third 30}}
                           返回 {Second 18} {First 24} {Third 30}, 並且                           │
                                  lsort -index end-1 {{a 1 e i} {b 2 3 f g} {c 4 5 6 d h}}        │
                           返回  {c  4  5  6 d h} {a 1 e i} {b 2 3 f g}.  這個選項比使用 -command
                           來完成同樣的功能要更加高效。

       -unique             如果指定了這個選項,則保留在這個列表中找到的重複的(duplicate)元素的最
                           後一組。注意重複是相對於在排序中使用的比較來決定的。所以如果使用了
                           -index 0{1 a}{1 b}   將被認爲是重複的並只保留第二個元素 {1 b}

注意 NOTES

       The options to lsort only control what sort of comparison is used, and do not  necessarily
       constrain  what  the  values themselves actually are.  This distinction is only noticeable
       when the list to be sorted has fewer than two elements.

       The lsort command is reentrant, meaning it is safe to use as part of the implementation of
       a command used in the -command option.

範例 EXAMPLES

       Sorting a list using ASCII sorting:
              % lsort {a10 B2 b1 a1 a2}
              B2 a1 a10 a2 b1

       Sorting a list using Dictionary sorting:
              % lsort -dictionary {a10 B2 b1 a1 a2}
              a1 a2 a10 b1 B2

       Sorting lists of integers:
              % lsort -integer {5 3 1 2 11 4}
              1 2 3 4 5 11
              % lsort -integer {1 2 0x5 7 0 4 -1}
              -1 0 1 2 4 0x5 7

       Sorting lists of floating-point numbers:
              % lsort -real {5 3 1 2 11 4}
              1 2 3 4 5 11
              % lsort -real {.5 0.07e1 0.4 6e-1}
              0.4 .5 6e-1 0.07e1

       Sorting using indices:
              % # Note the space character before the c
              % lsort {{a 5} { c 3} {b 4} {e 1} {d 2}}
              { c 3} {a 5} {b 4} {d 2} {e 1}
              % lsort -index 0 {{a 5} { c 3} {b 4} {e 1} {d 2}}
              {a 5} {b 4} { c 3} {d 2} {e 1}
              % lsort -index 1 {{a 5} { c 3} {b 4} {e 1} {d 2}}
              {e 1} {d 2} { c 3} {b 4} {a 5}

       Stripping duplicate values using sorting:
              % lsort -unique {a b c a b c a b c}
              a b c

       More complex sorting using a comparison function:
              % proc compare {a b} {
                  set a0 [lindex $a 0]
                  set b0 [lindex $b 0]
                  if {$a0 < $b0} {
                      return -1
                  } elseif {$a0 > $b0} {
                      return 1
                  }
                  return [string compare [lindex $a 1] [lindex $b 1]]
              }
              % lsort -command compare \
                      {{3 apple} {0x2 carrot} {1 dingo} {2 banana}}
              {1 dingo} {2 banana} {0x2 carrot} {3 apple}

參見 SEE ALSO

       lappend(n), lindex(n), linsert(n), list(n), llength(n), lrange(n), lreplace(n), lsearch(n)

關鍵字 KEYWORDS

       element, list, order, sort

[中文版維護人]

       寒蟬退士

[中文版最新更新]

       2001/09/06

《中國 Linux 論壇 man 手冊頁翻譯計劃》:

       http://cmpp.linuxforum.net

       本頁面中文版由中文 man 手冊頁計劃提供。
       中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh