文本操作(2)——sort

[prophet@localhost cgi-bin]$ sort –help
用法:sort [选项]… [文件]…
 或:sort [选项]… –files0-from=F
Write sorted concatenation of all FILE(s) to standard output.

Mandatory arguments to long options are mandatory for short options too.
排序选项:

  -b, --ignore-leading-blanks   忽略前导的空白区域
  -d, --dictionary-order    只考虑空白区域和字母字符
  -f, --ignore-case     忽略字母大小写
  -g, --general-numeric-sort    compare according to general numerical value
  -i, --ignore-nonprinting      consider only printable characters
  -M, --month-sort              compare (unknown) < 'JAN' < ... < 'DEC'
  -h, --human-numeric-sort      使用易读性数字(例如: 2K 1G)
  -n, --numeric-sort        根据字符串数值比较
  -R, --random-sort     根据随机hash 排序
  --random-source=文件    从指定文件中获得随机字节
  -r, --reverse         逆序输出排序结果
  --sort=WORD       按照WORD 指定的格式排序:
                一般数字-g,高可读性-h,月份-M,数字-n,
                随机-R,版本-V
  -V, --version-sort        在文本内进行自然版本排序

其他选项:

      --batch-size=NMERGE   一次最多合并NMERGE 个输入;如果输入更多则使用临时文件
  -c, --check, --check=diagnose-first   检查输入是否已排序,若已有序则不进行操作
  -C, --check=quiet, --check=silent 类似-c,但不报告第一个无序行
     --compress-program=程序  使用指定程序压缩临时文件;使用该程序的-d 参数解压缩文件
      --debug           为用于排序的行添加注释,并将有可能有问题的用法输出到标准错误输出
      --files0-from=文件  从指定文件读取以NUL 终止的名称,如果该文件被指定为"-"则从标准输入读文件名
  -k, --key=KEYDEF              sort via a key; KEYDEF gives location and type
  -m, --merge                   merge already sorted files; do not sort
  -o, --output=文件       将结果写入到文件而非标准输出
  -s, --stable          禁用last-resort 比较以稳定比较算法
  -S, --buffer-size=大小  指定主内存缓存大小
  -t, --field-separator=分隔符 使用指定的分隔符代替非空格到空格的转换
  -T, --temporary-directory=目录  使用指定目录而非$TMPDIR 或/tmp 作为临时目录,可用多个选项指定多个目录
  --parallel=N      将同时运行的排序数改变为N
  -u, --unique          配合-c,严格校验排序;不配合-c,则只输出一次排序结果
  -z, --zero-terminated     以0 字节而非新行作为行尾标志
  --help            显示此帮助信息并退出
  --version         显示版本信息并退出

KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where F is a
field number and C a character position in the field; both are origin 1, and
the stop position defaults to the line’s end. If neither -t nor -b is in
effect, characters in a field are counted from the beginning of the preceding
whitespace. OPTS is one or more single-letter ordering options [bdfgiMhnRrV],
which override global ordering options for that key. If no key is given, use
the entire line as the key.

SIZE may be followed by the following multiplicative suffixes:
内存使用率% 1%,b 1、K 1024 (默认),M、G、T、P、E、Z、Y 等依此类推。

如果不指定文件,或者文件为”-“,则从标准输入读取数据。

* 警告 *
本地环境变量会影响排序结果。
如果希望以字节的自然值获得最传统的排序结果,请设置LC_ALL=C。

实例:
sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

[root@mail text]# cat sort.txt 
aaa:10:1.1 
ccc:30:3.3 
ddd:40:4.4 
bbb:20:2.2 
eee:50:5.5 
eee:50:5.5 

[root@mail text]# sort sort.txt 
aaa:10:1.1 
bbb:20:2.2 
ccc:30:3.3 
ddd:40:4.4 
eee:50:5.5 
eee:50:5.5 

忽略相同行使用-u选项或者uniq:

[root@mail text]# cat sort.txt 
aaa:10:1.1 
ccc:30:3.3 
ddd:40:4.4 
bbb:20:2.2 
eee:50:5.5 
eee:50:5.5 

[root@mail text]# sort -u sort.txt 
aaa:10:1.1 
bbb:20:2.2 
ccc:30:3.3 
ddd:40:4.4 
eee:50:5.5 

或者

[root@mail text]# uniq sort.txt 
aaa:10:1.1 
ccc:30:3.3 
ddd:40:4.4 
bbb:20:2.2 
eee:50:5.5 

sort的-n、-r、-k、-t选项的使用:

[root@mail text]# cat sort.txt 
AAA:BB:CC 
aaa:30:1.6 
ccc:50:3.3 
ddd:20:4.2 
bbb:10:2.5 
eee:40:5.4 
eee:60:5.1 

将BB列按照数字从小到大顺序排列:

[root@mail text]# sort -nk 2 -t: sort.txt 
AAA:BB:CC 
bbb:10:2.5 
ddd:20:4.2 
aaa:30:1.6 
eee:40:5.4 
ccc:50:3.3 
eee:60:5.1 

将CC列数字从大到小顺序排列:

[root@mail text]# sort -nrk 3 -t: sort.txt 
eee:40:5.4 
eee:60:5.1 
ddd:20:4.2 
ccc:50:3.3 
bbb:10:2.5 
aaa:30:1.6 
AAA:BB:CC 

-n是按照数字大小排序,-r是以相反顺序,-k是指定需要爱排序的栏位,-t指定栏位分隔符为冒号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值