Tcl: Lsort output differs from bash sort
From FVue
Contents
Problem
Bash sort
sorts different compared to tcl lsort
. E.g. bash outputs:
$ { echo a-b; echo ab; echo a-; } | sort a- ab a-b $
Whereas tcl outputs:
% set a {a-b a- ab} a-b a- ab % join [lsort $a] "\n" a- a-b ab %
The difference happens because both environments use a different sorting order:
- bash sort uses the current locale's collating sequence and character set
- tcl lsort uses a C-like sort order where each character is sorted according to its numeric value
Solution 1: Let bash sort like tcl lsort
$ export LC_COLLATE=C $ { echo a-b; echo ab; echo a-; } | sort a- a-b ab $ unset LC_COLLATE $
Solution 2: Let tcl sort like bash sort
% set a {a-b a- ab} a-b a- ab % exec sort << [join $a "\n"] a- ab a-b %
Advertisement