Provided by:
manpages-zh_1.5.1-1_all 
NAME
lsort - 給一茼C表的元素排序
` SYNOPSIS
lsort ?options? list
_________________________________________________________________
yz DESCRIPTION
這茤R令給 list 的元素排序,返回按整理後的次序(排列)的一虓s列表。lsort
命令的實現使用了歸並排序算法,這蚨滫k有 O(n log n) 性能特征的一蚚-
定的排序算法。
預設的使用 ASCII 排序,並按升序返回結果。但是,可以在 list 的前-
惚定任何下列參數來控制排序處理(接受唯一性的縮寫):
-ascii 字符串比較使用 ASCII
(作為)整理(collation)次序。這是預設的。
-dictionary 使用字典式樣的比較。除了下列兩點之外它同於
-ascii。(a) 除了作為一 tie-breaker
之外忽略大寫,(b)
如果字符串包含嵌入的數字,數字作為整數來比較而不是字符。例如,在
-dictionary 模式下,bigBoy 排序在 bigbang 和
bigboy 之間,而 x10y 排序在 x9y 和 x11y 之間。
-integer 把列表元素轉換成整數並使用整數比較。
-real 把列表元素轉換成浮點癡洏巹B點比較。
-command command 使用 command 作為一茪騆命令。想比較兩茪葛嚏A-
n求由 command 構成的一 Tcl 稿本的A並加上兩-
茪葛嬪@為(向這蚢L程)附加的參數。如果第一-
荌捊Q認定為小於、等於、或大於第二荌捊A這-
蚑Z本應該分別返回小於、等於、或大於零的一蚞蒱C
-increasing 按升序整理這茼C表(「最小」
的項目在最先)。這是預設的。
-decreasing 按飢蓂z這茼C表(「最大」 的項目在最先)。
-index index 如果指定了這蚇龠窗Alist 的每茪葛嬰菬必須是一-
茈蕭T的 Tcl 子列表。不是基於整茪l列表來排序,lsort
將從每茪l列表中提取第 index 茪葛嬤簸簼馧o-
茧鼎w的元素來排序。index 允釣洏恞鶬鉿r 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 如果指定了這蚇龠窗A則保留在這茼C表中找到的-
契_的(duplicate)元素的最後一組。注意-
契_是相對於在排序中使用的比較來決定的。所以如果使用了
-index 0 ,{1 a} 和 {1 b} 將被認為是-
契_的並只保留第二茪葛 {1 b}。
`N 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.
d 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)
r KEYWORDS
element, list, order, sort
[]
Hhh
[]
2001/09/06
m Linux manUpn:
http://cmpp.linuxforum.net