一直以来都在用 en_US.UTF-8, 但是用 sort, comm 总是怪怪的.
用 en_US, 排序会忽略符号
$ printf "a.d\na_c\nab" | sort ab a_c a.d
用 C
$ printf "a.d\na_c\nab" | sort a.d a_c ab
用 awk 排序, 不依赖 locale
$ printf "a.d\na_c\nab" | awk '{if ($0!="") {a[$0]}} END {asorti(a); for (k in a) {print a[k]}}' a.d a_c ab
用 en_US
$ printf "a.d\na_c\nab" | sort a_c a.d ab
用 C
$ printf "a.d\na_c\nab" | sort a.d a_c ab
用 gawk 排序和 Linux 一样 (FreeBSD 自身的 awk 不支持 asorti)