仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 423|回复: 7
打印 上一主题 下一主题

[CentOS(社区)] 带来一篇Centos下令――sort

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 21:17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
欢迎大家来到仓酷云论坛!功效申明:将文本文件内容加以排序。
语  法:sort[-bcdfimMnr][-o<输入文件>][-t<分开字符>][+<肇端栏位>-<停止栏位>][--help][--verison][文件]
增补申明:sort可针对文本文件的内容,以举动单元来排序。
参  数:
 -b  疏忽每行后面入手下手出的空格字符。
 -c  反省文件是不是已依照按次排序。
 -d  排序时,处置英笔墨母、数字及空格字符外,疏忽其他的字符。
 -f  排序时,将小写字母视为年夜写字母。
 -i  排序时,除040至176之间的ASCII字符外,疏忽其他的字符。
 -m  将几个排序好的文件举行兼并。
 -M  将后面3个字母按照月份的缩写举行排序。
 -n  按照数值的巨细排序。
 -o<输入文件>  将排序后的了局存进指定的文件。
 -r  以相反的按次来排序。
 -t<分开字符>  指定排序时所用的栏位分开字符。
 +<肇端栏位>-<停止栏位>  以指定的栏位来排序,局限由肇端栏位到停止栏位的前一栏位。
 --help  显现匡助。
 --version  显现版本信息

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

上面经由过程几个例子来说述Sort的利用。

用Sort下令对text文件中各行排序后输入其了局。请注重,在原文件的第2、三行上的第一个单词完整不异,该下令将从它们的第二个单词vegetables与fruit的首字符处持续举行对照。

$cattext
vegetablesoup
freshvegetables
freshfruit
lowfatmilk

$Sorttext
freshfruit
freshvegetables
lowfatmilk
vegetablesoup

用户能够保留排序后的文件内容,或把排序后的文件内容输入至打印机。下例顶用户把排序后的文件内容保留到名为result的文件中。

$Sorttext>result

以第2个字段作为排序关头字对文件example的内容举行排序。

$Sort+1-2example

关于file1和file2文件内容反向排序,了局放在outfile中,使用第2个字段的第一个字符作为排序关头字。

$Sort-r-ooutfile+1.0-1.1example

Sort排序经常使用于在管道中与其他下令连用,组合完成对照庞大的功效,如使用管道将以后事情目次中的文件送给Sort举行排序,排序关头字是第6个至第8个字段。

$ls-l|Sort+5-7
$ps-e-o"commpidtime"|Sort-d//依照command的首字母的字母按次排序

Sort下令也能够对尺度输出举行操纵。比方,假如您想把几个文件文本行兼并,并对兼并后的文本行举行排序,您能够起首用下令cat把多个文件兼并,然后用管道操纵把兼并后的文本行输出给下令Sort,Sort下令将输入这些兼并及排序后的文本行。鄙人面的例子中,文件veglist与文件fruitlist的文本行经由兼并与排序后被保留到文件clist中。

$catveglistfruitlist|Sort>clist
sort+3-4All-Unigene_PlantTFFamily_Abstract.out>All-Unigene_PlantTFFamily_Abstract.sort
sort-k4All-Unigene_PlantTFFamily_Abstract.out>All-Unigene_PlantTFFamily_Abstract.sort1

对一个文件两列排序,一列正序一列逆序

sort-k1,1n-k2,2nrfile

一列逆序二列正序

sort-k1,1nr-k2,2ntes.txt>result.txt

对一个文件两列排序

sort-k1,1n-k2,2nfile

1sort的事情道理
sort将文件的每行作为一个单元,互相对照,对照准绳是从首字符向后,顺次按ASCII码值举行对照,最初将他们按升序输入。
[rocrocket@rocrocketprogramming]$catseq.txt
banana
apple
pear
orange
[rocrocket@rocrocketprogramming]$sortseq.txt
apple
banana
orange
pear

2sort的-u选项

它的感化很复杂,就是在输入行中往除反复行。

[rocrocket@rocrocketprogramming]$catseq.txt
banana
apple
pear
orange
pear
[rocrocket@rocrocketprogramming]$sortseq.txt
apple
banana
orange
pear
pear
[rocrocket@rocrocketprogramming]$sort-useq.txt
apple
banana
orange
pear

pear因为反复被-u选项无情的删除。

3sort的-r选项

sort默许的排序体例是升序,假如想改成降序,就加个-r就弄定了。

[rocrocket@rocrocketprogramming]$catnumber.txt
1
3
5
2
4
[rocrocket@rocrocketprogramming]$sortnumber.txt
1
2
3
4
5
[rocrocket@rocrocketprogramming]$sort-rnumber.txt
5
4
3
2
1
4sort的-o选项

因为sort默许是把了局输入到尺度输入,以是必要用重定向才干将了局写进文件,形如sortfilename>newfile。

可是,假如你想把排序了局输入到原文件中,用重定向可就不可了。

[rocrocket@rocrocketprogramming]$sort-rnumber.txt>number.txt
[rocrocket@rocrocketprogramming]$catnumber.txt
[rocrocket@rocrocketprogramming]$
看,居然将number清空了。

就在这个时分,-o选项呈现了,它乐成的办理了这个成绩,让你宁神的将了局写进原文件。这也许也是-o比重定向的独一上风地点。

[rocrocket@rocrocketprogramming]$catnumber.txt
1
3
5
2
4
[rocrocket@rocrocketprogramming]$sort-rnumber.txt-onumber.txt
[rocrocket@rocrocketprogramming]$catnumber.txt
5
4
3
2
1

5sort的-n选项

你有无碰到过10比2小的情形。我归正碰到过。呈现这类情形是因为排序步伐将这些数字按字符来排序了,排序步伐会先对照1和2,明显1小,以是就将10放在2后面喽。这也是sort的一向风格。

我们假如想改动这类近况,就要利用-n选项,来告知sort,“要以数值来排序”!

[rocrocket@rocrocketprogramming]$catnumber.txt
1
10
19
11
2
5
[rocrocket@rocrocketprogramming]$sortnumber.txt
1
10
11
19
2
5
[rocrocket@rocrocketprogramming]$sort-nnumber.txt
1
2
5
10
11
19

6sort的-t选项和-k选项

假如有一个文件的内容是如许:

[rocrocket@rocrocketprogramming]$catfacebook.txt
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4

这个文件有三列,列与列之间用冒号离隔了,第一列暗示生果范例,第二列暗示生果数目,第三列暗示生果代价。

那末我想以生果数目来排序,也就是以第二列来排序,怎样使用sort完成?

幸亏,sort供应了-t选项,前面能够设定距离符。(是否是想起了cut和paste的-d选项,共识~~)

指定了距离符以后,就能够用-k来指定列数了。

[rocrocket@rocrocketprogramming]$sort-n-k2-t:facebook.txt
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3

我们利用冒号作为距离符,并针对第二列来举行数值升序排序,了局很使人中意。

7其他的sort经常使用选项

-f会将小写字母都转换为年夜写字母来举行对照,亦即疏忽巨细写

-c会反省文件是不是已排好序,假如乱序,则输入第一个乱序的行的相干信息,最初前往1

-C会反省文件是不是已排好序,假如乱序,不输入内容,仅前往1

-M会以月份来排序,好比JAN小于FEB等等

-b会疏忽每行后面的一切空缺部分,从第一个可见字符入手下手对照。如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!
透明 该用户已被删除
沙发
发表于 2015-1-17 10:15:53 | 只看该作者
我是学习嵌入式方向的,这学期就选修了这门专业任选课。
冷月葬花魂 该用户已被删除
板凳
发表于 2015-1-22 08:40:41 | 只看该作者
要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。
精灵巫婆 该用户已被删除
地板
发表于 2015-1-31 05:55:23 | 只看该作者
了解Linux的网络安全,系统的安全,用户的安全等。安全对于每位用户,管理员来说是非常重要的。
变相怪杰 该用户已被删除
5#
发表于 2015-2-6 18:06:58 | 只看该作者
一定要学好命令,shell是命令语言,命令解释程序及程序设计语言的统称,shell也负责用户和操作系统之间的沟通。
小魔女 该用户已被删除
6#
发表于 2015-2-18 03:07:15 | 只看该作者
Linux的成功就在于用最少的资源最短的时间实现了所有功能,这也是符合人类进化的,相信以后节能问题会日益突出。
再见西城 该用户已被删除
7#
发表于 2015-3-6 02:20:57 | 只看该作者
直到学习Linux这门课以后,我才知道,原来我错了。?
谁可相欹 该用户已被删除
8#
发表于 2015-3-20 03:39:41 | 只看该作者
学习Linux系统在服务中的配置方法及使用方法。Linux在服务器中应用相当广,应对常用的apache,samba,ftp等服务器基本配置清楚了解。[重点,应巩固学习]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 13:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表