linux之排序sort命令详解
linux之排序sort命令
sort排序规则:
- 以行为单位,每一行作为一个字符串
- 按照字符串的比较规则,首字母开始依次向后按ASCII码值进行比较
- 结果默认升序输出
1. 简单排序
[root@linuxforliuhj test]# cat test.txt
aaa:cde
bbb:dse
ccc:123
abc:rew
acb:1we
111:fdf
222:esa
333:iud
[root@linuxforliuhj test]# sort test.txt
111:fdf
222:esa
333:iud
aaa:cde
abc:rew
acb:1we
bbb:dse
ccc:123
使用sort进行简单排序,首字母开始依次进行比较。
2. 排序后去除重复的行,使用参数-u(unique)
[root@linuxforliuhj test]# cat test.txt
aaa:cde
aaa:cde
bbb:dse
ccc:123
abc:rew
abc:rew
abc:rew
acb:1we
111:fdf
222:esa
333:iud
[root@linuxforliuhj test]# sort -u test.txt
111:fdf
222:esa
333:iud
aaa:cde
abc:rew
acb:1we
bbb:dse
ccc:123
排序后将重复的行aaa:cde和abc:rew去重只保留一行。
3.默认排序为升序排序,使用参数-r进行降序排序
[root@linuxforliuhj test]# cat test.txt
aaa:cde
aaa:cde
bbb:dse
ccc:123
abc:rew
abc:rew
abc:rew
acb:1we
111:fdf
222:esa
333:iud
[root@linuxforliuhj test]# sort -u -r test.txt
ccc:123
bbb:dse
acb:1we
abc:rew
aaa:cde
333:iud
222:esa
111:fdf
进行降序排序,同时去除重复项。
4.将排序结果输出到指定文件,使用参数-o(out)
[root@linuxforliuhj test]# sort -u -r test.txt -o /test/test_1.txt
[root@linuxforliuhj test]# cat test_1.txt
ccc:123
bbb:dse
acb:1we
abc:rew
aaa:cde
333:iud
222:esa
111:fdf
将排序的结果输出到文件test_1.txt文件中,如果输出文件不存在会自动创建。同时也可以使用重定向符号进行输出。
[root@linuxforliuhj test]# sort -u -r test.txt > /test/test_2.txt
[root@linuxforliuhj test]# cat test_2.txt
ccc:123
bbb:dse
acb:1we
abc:rew
aaa:cde
333:iud
222:esa
111:fdf
参数-o和重定向符号的唯一区别:
当使用重定向符号将排序结果重定向输出回源文件进行覆盖时,会出错,源文件会被清空。
当使用-o参数时,则能够正常覆盖回源文件。
[root@linuxforliuhj test]# sort -u -r test.txt > /test/test.txt
[root@linuxforliuhj test]# ll -d /test/test.txt
-rw-r--r--. 1 root root 0 Oct 25 20:06 /test/test.txt
[root@linuxforliuhj test]# cat test.txt
[root@linuxforliuhj test]#
[root@linuxforliuhj test]# sort -u -r test.txt -o /test/test.txt
[root@linuxforliuhj test]# cat test.txt
ccc:123
bbb:dse
acb:1we
abc:rew
aaa:cde
333:iud
222:esa
111:fdf
[root@linuxforliuhj test]#
5.以数值进行比较,而并非字符串,使用参数-n(number)
[root@linuxforliuhj test]# cat test_n.txt
12322
54
735
9
[root@linuxforliuhj test]#
[root@linuxforliuhj test]# sort test_n.txt
12322
54
735
9
[root@linuxforliuhj test]# sort -n test_n.txt
9
54
735
12322
未使用-n参数则从首字母开始依次进行排序;使用-n参数后则按照数值进行排序;此参数只适用于纯数字字符串。
6.将每一行按照指定字符分割以后,选择其中的某一列进行排序,使用-t参数指定分割符,使用-k参数指定按照分割后的哪一列进行排序。
[root@linuxforliuhj test]# cat test.txt
asd:34w:dsw
ccc:123:343
bbb:123:dfe
aab:1we:hiu
abc:lwe:htt
aaa:cde:lpu
333:esa:qas
222:esa:ase
111:fdf:cxs
以:分割每一行并按照第1列进行排序
[root@linuxforliuhj test]# sort -t ':' -k 1 test.txt
111:fdf:cxs
222:esa:ase
333:esa:qas
aaa:cde:lpu
aab:1we:hiu
abc:lwe:htt
asd:34w:dsw
bbb:123:dfe
ccc:123:343
以:分割每一行并按照第2列进行排序
[root@linuxforliuhj test]# sort -t ':' -k 2 test.txt
ccc:123:343
bbb:123:dfe
aab:1we:hiu
asd:34w:dsw
aaa:cde:lpu
222:esa:ase
333:esa:qas
111:fdf:cxs
abc:lwe:htt
以:分割每一行并按照第3列进行排序
[root@linuxforliuhj test]# sort -t ':' -k 3 test.txt
ccc:123:343
222:esa:ase
111:fdf:cxs
bbb:123:dfe
asd:34w:dsw
aab:1we:hiu
abc:lwe:htt
aaa:cde:lpu
333:esa:qas
7.sort命令适用于管道符
[root@linuxforliuhj test]# cat test.txt
ccccc
bdsdsad
adsfwe
gdgsdf
we
wdsafswqeqw
jhhtyty
[root@linuxforliuhj test]# cat test.txt | sortadsfwe
bdsdsad
ccccc
dsafswqeqw
gdgsdf
jhhtyty
w
we
[root@linuxforliuhj test]# cat test.txt | sort -r
we
w
jhhtyty
gdgsdf
dsafswqeqw
ccccc
bdsdsad
adsfwe[root@linuxforliuhj test]#
8.注意
注意:
【1】sort还有一些其他的不常用的参数,例如-f,-b , -c, -C等
【2】sort默认是使用-b参数的,即默认删除每一行之前的空格,从第一个非空格数据开始比较
[root@linuxforliuhj test]# cat te.txt
hello this ishello this is
hellothis is
hello this a
[root@linuxforliuhj test]# sort te.txt
hello this ahello this is
hello this is
hellothis is
可以看出默认的sort命令忽略每一行第一个字符之前的空格,而并非整行所有的空格!
9.忽略大小写参数-f引发的奇怪现象
[root@linuxforliuhj test]# cat hello.sh
A
a
B
b
d
D
e
E
[root@linuxforliuhj test]# sort hello.sh
a
A
b
B
d
D
e
E
[root@linuxforliuhj test]# sort -f hello.sh
A
a
B
b
D
d
E
e
目前查了很多资料还不清楚具体是什么原因,所以尽量不要用-f参数,可以使用tr等命令进行大小写替换后再排序!
linux之排序sort命令详解相关推荐
- linux sort 命令详解
linux sort 命令详解 sort命令的功能是对文件中的各行进行排序.sort命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内容进行各种排序操作的.实际上,sort命令可以被认为 ...
- linux sort 命令详解(转 )
linux sort 命令详解 sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! 1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比 ...
- linux sort命令 性能,linux sort 命令详解
linux sort 命令详解 sort命令的功能是对文件中的各行进行排序.sort命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内容进行各种排序操作的.实际 上,sort命令可以被认 ...
- linux之去重uniq命令详解
linux之去重uniq命令详解 uniq是对文本文件进行行去去重的工具. 以行为单位,进行行与行之间的字符串比较并进行去重 只能对有序的文本行进行有效去重,所以常与sort命令结合使用 参数 解释 ...
- linux cut命令学习,Linux中的cut 命令详解
今天小编要跟大家分享的文章是关于Linux中的cut 命令详解.cut 命令在Linux和Unix中的作用是从文件中的每一行中截取出一些部分,并输出到标准输出中.我们可以使用 cut 命令从一行字符串 ...
- LINUX经常使用的命令详解
LINUX经常使用的命令详解 源地址:http://blog.itpub.net/29065182/viewspace-1189162/ 1.man 对你熟悉或不熟悉的命令提供帮助解释 eg:man ...
- linux三剑客之awk命令详解
linux三剑客之awk命令详解 awk 是一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件.数据排序.计算以及生成报表等等.awk工具主要用于格式化输出,可以用类似于处理表格的方式处理文 ...
- linux ps(process status) 命令详解
linux ps(process status) 命令详解 功能说明:报告程序状况. 语 法:ps [-aAcdefHjlmNVwy][acefghLnrsSTuvxX][-C <指令名称> ...
- Linux操作系统上lsof命令详解
Linux操作系统上lsof命令详解 2011-10-08 18:31:31 http://xjsunjie.blog.51cto.com/999372/682865 标签:Linux lsof命令 ...
最新文章
- 蚂蚁开源增强版 SpringBoot,都有哪些骚能力?
- 昔日的独角兽Docker资金紧张,未来前途未卜
- hihocoder 1638:多级并查集
- Tensorflow 官方版教程中文版
- 疯狂的ASP.NET系列-第一篇:啥是ASP.NET
- 360搜索、UC浏览器等被3·15点名应用已下架;马斯克宣布通过NFT卖歌;美团App再发力社交,内测 “群聊”功能 |极客头条...
- 未来教育计算机vb二级,2019年3月计算机二级VB考试巩固试题及答案020
- Monostate模式
- Cache 和 Buffer 有什么区别?
- 搞懂神经网络处理器的性能指标
- OpenCV 视频捕捉
- Python3,1行代码,去除图片的背景图,确实香。
- 正则表达网络三剑客之sed
- 外媒曝:暴雪《炉石传说》或登陆安卓和WP平台
- 由浅入深了解羚珑平台统一接入服务 —— Monet
- 小米air2se耳机只有一边有声音怎么办_小米无线蓝牙耳机Air2 SE——性价比背后的妥协之作...
- 全球首个 AI 说唱歌手 TikTok 发新歌,东西方审美差异巨大
- 电脑黑屏但可以打开任务管理器
- 抖音大咖如何寻找广告主?这三种途径值得了解
- Jython 调用 Java 碰壁全纪录
热门文章
- 彻底关闭windows Update服务
- VScode检测到#include 错误,请更新includepath。已为此翻译单元 禁用波形曲线//gcc : 无法将“gcc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
- 普元DevOps使用规范与流程
- 大公司高级Android工程师技能要求
- 模糊锐化涂抹加深减淡海绵以及蒙版
- 快学Scala 读书笔记之 Chapter 2、3、4(控制结构函数,数组,映射,元组)
- linux各种配置笔记
- Python开发的Web在线学习教育培训网课系统
- php 根路由器,Pux
- VHDL出现综合错误:“ERROR:Xst:827 - file_name Line xx: Signal xx cannot be synthesized, bad synchronous desc