文本操作(2)——sort

来源:互联网 发布:linux有什么认证 编辑:程序博客网 时间:2024/05/21 06:38

[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指定栏位分隔符为冒号

原创粉丝点击