我以为这sort
会将常见前缀排序在一起,但这并不总是发生。以这个输入为例:
AT0S*eightieths
AT0S*eyetooth's
AT*ad
AT*Ad
AT*AD
AT*Eydie
AT*eyed
ATF*adv
ATF*ATV
ATF*edify
ATF*Ediva
ATFKT*advocate
ATFKTNK*advocating
ATFKT*outfought
ATFKTS*advocates
ATHT*whitehead
ATHT*Whitehead
AT*id
AT*I'd
AT*Ito
AT*IUD
ATJ*adage
ATNXNS*attention's
ATNXNS*attenuation's
ATNXNS*autoignition's
AT*oat
AT*OD
AT*outweigh
AT*owed
ATP0K*idiopathic
ATP*adobe
ATT*wighted
ATT*witted
ATT*wooded
AT*UT
AT*Uta
AT*wowed
AT*Wyatt
ATX*atishoo
之后sort
,我希望所有的AT*
都集中在一个块中,但是当您通过运行这些数据时sort
,输出输入==
。为什么会这样?我没有指定任何选项来忽略非字母字符或任何其他内容。只是sort dict > out
。
我的版本sort
来自coreutils 8.5-1ubuntu3
。
答案1
sort --version-sort filename
这保留了数字的自然顺序。
答案2
在我的例子中,设置 LC_ALL=C 恢复了传统的排序顺序。软件包:coreutils 版本:8.5-1ubuntu3
export LC_ALL=C
答案3
根据其他人的评论提供一个简单的答案,这不会改变您的环境:
input_program | LC_COLLATE=C sort | output_program
或者
LC_COLLATE=C sort < input_file > output_file
或其组合。
答案4
它对我而言如预期般工作(在 cygwin 上)。
sort input > output
结果是
AT*AD AT *广告 AT*Eydie AT*我会 宫内节育器 AT*伊藤 距离*OD 美国电话电报公司 AT*乌塔 AT*怀亚特 AT *广告 AT*眼睛 AT*id AT*燕麦 AT*超过 AT*欠 AT*哇哦 AT0S*八十分之一 AT0S*eyetooth 的 ATF *全地形车 ATF *埃迪瓦 ATF * 高级 ATF*编辑 ATFKT*倡导者 ATFKT*被击败 ATFKTNK*提倡 ATFKTS*倡导者 ATHT*怀特黑德 ATHT*白头 ATJ* 谚语 ATNXNS*关注 ATNXNS*衰减 ATNXNS*自燃 ATP*adobe ATP0K*特发性 ATT*加权 ATT*witted ATT*树木繁茂 ATX *阿蒂舒
sort 是否有别名?尝试\sort
还
环境指定的语言环境会影响排序顺序。设置 LC_ALL=C 可获取使用本机字节值的传统排序顺序