百度
360搜索
搜狗搜索

sort命令详解,linux sort命令参数及用法详解详细介绍

本文目录一览: linux sort命令参数及用法详解

Linux sort命令用于将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序。
sort命令的语法格式:sort[参数][文件]
Linux sort命令参数:
-b:忽略每行前面开始出的空格符号。
-c:检查文件是否已经按照顺序排序。
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f:排序时,将小写字母视为大写字母。
-i:排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m:将几个排序好的文件进行合并。
-M:将前面三个字母依照月份的缩写进行排序。
-n:依照数值的大小排序。
-u:意味着是唯一的,输出的结果是去完重了的。
-o:

将排序后的结果存入指定的文件。

-r:以相反的顺序来排序。

-t:

指定排序时所用的栏位分隔字符。

功能说明:将文本文件内容加以排序。

功能说明:将文本文件内容加以排序。

语  法: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命令的功能是对文件中的各行进行排序。sort命令有许多非常实用的选项,这些选项最初是用来对数据库格式的文件内容进行各种排序操作的。下面跟着我一起来了解一下吧。
  sort排序命令怎么使用
  1 sort的工作原理
  sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
  [rocrocket@rocrocket programming]$ cat seq.txt
  banana
  apple
  pear
  orange
  [rocrocket@rocrocket programming]$ sort seq.txt
  apple
  banana
  orange
  pear
  2 sort的-u选项
  它的作用很简单,就是在输出行中去除重复行。
  [rocrocket@rocrocket programming]$ cat seq.txt
  banana
  apple
  pear
  orange
  pear
  [rocrocket@rocrocket programming]$ sort seq.txt
  apple
  banana
  orange
  pear
  pear
  [rocrocket@rocrocket programming]$ sort -u seq.txt
  apple
  banana
  orange
  pear
  pear由于重复被-u选项无情的删除了。
  3 sort的-r选项
  sort默认的排序方式是升序,如果想改成降序,就加个-r就搞定了。
  [rocrocket@rocrocket programming]$ cat number.txt
  1
  3
  5
  2
  4
  [rocrocket@rocrocket programming]$ sort number.txt
  1
  2
  3
  4
  5
  [rocrocket@rocrocket programming]$ sort -r number.txt
  5
  4
  3
  2
  1
  4 sort的-o选项
  由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。
  但是,如果你想把排序结果输出到原文件中,用重定向可就不行了。
  [rocrocket@rocrocket programming]$ sort -r number.txt > number.txt
  [rocrocket@rocrocket programming]$ cat number.txt
  [rocrocket@rocrocket programming]$
  看,竟然将number清空了。
  就在这个时候,-o选项出现了,它成功的解决了这个问题,让你放心的将结果写入原文件。这或许也是-o比重定向的唯一优势所在。
  [rocrocket@rocrocket programming]$ cat number.txt
  1
  3
  5
  2
  4
  [rocrocket@rocrocket programming]$ sort -r number.txt -o number.txt
  [rocrocket@rocrocket programming]$ cat number.txt
  5
  4
  3
  2
  1
  5 sort的-n选项
  你有没有遇到过10比2小的情况。我反正遇到过。出现这种情况是由于排序程序将这些数字按字符来排序了,排序程序会先比较1和2,显然1小,所以就将10放在2前面喽。这也是sort的一贯作风。
  我们如果想改变这种现状,就要使用-n选项,来告诉sort,“要以数值来排序”!
  [rocrocket@rocrocket programming]$ cat number.txt
  1
  10
  19
  11
  2
  5
  [rocrocket@rocrocket programming]$ sort number.txt
  1
  10
  11
  19
  2
  5
  [rocrocket@rocrocket programming]$ sort -n number.txt
  1
  2
  5
  10
  11
  19
  6 sort的-t选项和-k选项
  如果有一个文件的内容是这样:
  [rocrocket@rocrocket programming]$ cat facebook.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@rocrocket programming]$ sort -n -k 2 -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会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。
  有时候学习脚本,你会发现sort命令后面跟了一堆类似-k1,2,或者-k1.2 -k3.4的东东,有些匪夷所思。今天,我们就来搞定它—-k选项!
  1 准备素材
  $ cat facebook.txt
  google 110 5000
  baidu 100 5000
  guge 50 3000
  sohu 100 4500
  第一个域是公司名称,第二个域是公司人数,第三个域是员工平均工资。(除了公司名称,其他的别信,都瞎写的^_^)
  2 我想让这个文件按公司的字母顺序排序,也就是按第一个域进行排序:(这个facebook.txt文件有三个域)
  $ sort -t ‘ ‘ -k 1 facebook.txt
  baidu 100 5000
  google 110 5000
  guge 50 3000
  sohu 100 4500
  看到了吧,就直接用-k 1设定就可以了。(其实此处并不严格,稍后你就会知道)
  3 我想让facebook.txt按照公司人数排序
  $ sort -n -t ‘ ‘ -k 2 facebook.txt
  guge 50 3000
  baidu 100 5000
  sohu 100 4500
  google 110 5000
  不用解释,我相信你能懂。
  但是,此处出现了问题,那就是baidu和sohu的公司人数相同,都是100人,这个时候怎么办呢?按照默认规矩,是从第一个域开始进行升序排序,因此baidu排在了sohu前面。
  4 我想让facebook.txt按照公司人数排序 ,人数相同的按照员工平均工资升序排序:
  $ sort -n -t ‘ ‘ -k 2 -k 3 facebook.txt
  guge 50 3000
  sohu 100 4500
  baidu 100 5000
  google 110 5000
  看,我们加了一个-k2 -k3就解决了问题。对滴,sort支持这种设定,就是说设定域排序的优先级,先以第2个域进行排序,如果相同,再以第3个域进行排序。(如果你愿意,可以一直这么写下去,设定很多个排序优先级)
  5 我想让facebook.txt按照员工工资降序排序,如果员工人数相同的,则按照公司人数升序排序:(这个有点难度喽)
  $ sort -n -t ‘ ‘ -k 3r -k 2 facebook.txt
  baidu 100 5000
  google 110 5000
  sohu 100 4500
  guge 50 3000
  此处有使用了一些小技巧,你仔细看看,在-k 3后面偷偷加上了一个小写字母r。你想想,再结合我们上一篇 文章 ,能得到答案么?揭晓:r和-r选项的作用是一样的,就是表示逆序。因为sort默认是按照升序排序的,所以此处需要加上r表示第三个域(员工平均工资)是按照降序排序。此处你还可以加上n,就表示对这个域进行排序时,要按照数值大小进行排序,举个例子吧:
  $ sort -t ‘ ‘ -k 3nr -k 2n facebook.txt
  baidu 100 5000
  google 110 5000
  sohu 100 4500
  guge 50 3000
  看,我们去掉了最前面的-n选项,而是将它加入到了每一个-k选项中了。
  6 -k选项的具体语法格式
  要继续往下深入的话,就不得不来点理论知识。你需要了解-k选项的语法格式,如下:
  [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
  这个语法格式可以被其中的逗号(“,”)分为两大部分,Start部分和End部分。
  先给你灌输一个思想,那就是“如果不设定End部分,那么就认为End被设定为行尾”。这个概念很重要的,但往往你不会重视它。
  Start部分也由三部分组成,其中的Modifier部分就是我们之前说过的类似n和r的选项部分。我们重点 说说 Start部分的FStart和C.Start。
  C.Start也是可以省略的,省略的话就表示从本域的开头部分开始。之前例子中的-k 2和-k 3就是省略了C.Start的例子喽。
  FStart.CStart,其中FStart就是表示使用的域,而CStart则表示在FStart域中从第几个字符开始算“排序首字符”。
  同理,在End部分中,你可以设定FEnd.CEnd,如果你省略.CEnd,则表示结尾到“域尾”,即本域的最后一个字符。或者,如果你将CEnd设定为0(零),也是表示结尾到“域尾”。
  7 突发奇想,从公司英文名称的第二个字母开始进行排序:
  $ sort -t ‘ ‘ -k 1.2 facebook.txt
  baidu 100 5000
  sohu 100 4500
  google 110 5000
  guge 50 3000
  看,我们使用了-k 1.2,这就表示对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序。你会发现baidu因为第二个字母是a而名列榜首。sohu和 google第二个字符都是o,但sohu的h在google的o前面,所以两者分别排在第二和第三。guge只能屈居第四了。
  8 又突发奇想,,只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序:
  $ sort -t ‘ ‘ -k 1.2,1.2 -k 3,3nr facebook.txt
  baidu 100 5000
  google 110 5000
  sohu 100 4500
  guge 50 3000
  由于只对第二个字母进行排序,所以我们使用了-k 1.2,1.2的表示方式,表示我们“只”对第二个字母进行排序。(如果你问“我使用-k 1.2怎么不行?”,当然不行,因为你省略了End部分,这就意味着你将对从第二个字母起到本域最后一个字符为止的字符串进行排序)。对于员工工资进行排 序,我们也使用了-k 3,3,这是最准确的表述,表示我们“只”对本域进行排序,因为如果你省略了后面的3,就变成了我们“对第3个域开始到最后一个域位置的内容进行排序” 了。
  9 在modifier部分还可以用到哪些选项?
  可以用到b、d、f、i、n 或 r。
  其中n和r你肯定已经很熟悉了。
  b表示忽略本域的签到空白符号。
  d表示对本域按照字典顺序排序(即,只考虑空白和字母)。
  f表示对本域忽略大小写进行排序。
  i表示忽略“不可打印字符”,只针对可打印字符进行排序。(有些ASCII就是不可打印字符,比如\a是报警,\b是退格,\n是换行,\r是回车等等)
  10 思考思考关于-k和-u联合使用的例子:
  $ cat facebook.txt
  google 110 5000
  baidu 100 5000
  guge 50 3000
  sohu 100 4500
  这是最原始的facebook.txt文件。
  $ sort -n -k 2 facebook.txt
  guge 50 3000
  baidu 100 5000
  sohu 100 4500
  google 110 5000
  $ sort -n -k 2 -u facebook.txt
  guge 50 3000
  baidu 100 5000
  google 110 5000
  当设定以公司员工域进行数值排序,然后加-u后,sohu一行就被删除了!原来-u只识别用-k设定的域,发现相同,就将后续相同的行都删除。
  $ sort -k 1 -u facebook.txt
  baidu 100 5000
  google 110 5000
  guge 50 3000
  sohu 100 4500
  $ sort -k 1.1,1.1 -u facebook.txt
  baidu 100 5000
  google 110 5000
  sohu 100 4500
  这个例子也同理,开头字符是g的guge就没有幸免于难。
  $ sort -n -k 2 -k 3 -u facebook.txt
  guge 50 3000
  sohu 100 4500
  baidu 100 5000
  google 110 5000
  咦!这里设置了两层排序优先级的情况下,使用-u就没有删除任何行。原来-u是会权衡所有-k选项,将都相同的才会删除,只要其中有一级不同都不会轻易删除的:)(不信,你可以自己加一行sina 100 4500试试看)
  11 最诡异的排序:
  $ sort -n -k 2.2,3.1 facebook.txt
  guge 50 3000
  baidu 100 5000
  sohu 100 4500
  google 110 5000
  以第二个域的第二个字符开始到第三个域的第一个字符结束的部分进行排序。
  第一行,会提取0 3,第二行提取00 5,第三行提取00 4,第四行提取10 5。
  又因为sort认为0小于00小于000小于0000….
  因此0 3肯定是在第一个。10 5肯定是在最后一个。但为什么00 5却在00 4前面呢?(你可以自己做实验思考一下。)
  答案揭晓:原来“跨域的设定是个假象”,sort只会比较第二个域的第二个字符到第二个域的最后一个字符的部分,而不会把第三个域的开头字符纳入比较范围。当发现00和00相同时,sort就会自动比较第一个域去了。当然baidu在sohu前面了。用一个范例即可证实:
  $ sort -n -k 2.2,3.1 -k 1,1r facebook.txt
  guge 50 3000
  sohu 100 4500
  baidu 100 5000
  google 110 5000
  12 有时候在sort命令后会看到+1 -2这些符号,这是什么东东?
  关于这种语法,最新的sort是这么进行解释的:
  On older systems, `sort’ supports an obsolete origin-zero syntax `+POS1 [-POS2]‘ for specifying sort keys. POSIX 1003.1-2001 (*note Standards conformance::) does not allow this; use `-k’ instead.
  原来,这种古老的表示方式已经被淘汰了,以后可以理直气壮的鄙视使用这种表示 方法 的脚本喽!
  (为了防止古老脚本的存在,在这再说一下这种表示方法,加号表示Start部分,减号表示End部分。最最重要的一点是,这种方式方法是从0开始计数的,以前所说的第一个域,在此被表示为第0个域。以前的第2个字符,在此表示为第1个字符。)

阅读更多 >>>  linux上安装apk文件怎么打开文件

linux sort 命令整理

无论是工作中使用还是应付各种面试,linux sort 都是必须要掌握的 linux 基本命令之一。尤其是 linux sort -k 命令,经常会被搞晕,索性好好研究一下 sort 命令
语法:
选项:
参数就不一一介绍了,直接上例子,首先先看下原始的排序数据 cat sort.log
1、打印从哪列开始是乱序 sort -c sort.log; echo $?
sort -C sort.log; echo $?
其中,返回结果 1,表示文件不是已经排序好的文件 2、默认排序( 整行进行ASCII字符升序) sort sort.log
3、高能来了,让人迷糊的 k 语法,首先看下 k 的语法格式
这个语法格式可以被其中的逗号(”,”)分为两大部分,Start部分和End部分 Start和End部分都由三部分组成,其中的Modifier部分就是类似n和r的选项部分,可省略 FStart、Fend,表示使用的域,而CStart则表示在FStart域中从第几个字符开始算"排序首字符",同理,CEnd表示结尾的第几个字符是排序末尾字符,.CStart、.CEnd是可以省略的,分别表示从本域的开头部分开始、到本域的域尾结束,CEnd设定为0,也是表示结尾到域尾。口说无凭,上几个例子吧
3.1 对第三列进行排序,如果不加n,按照 ASCII字符排序 sort -t $'\t' -k 3 sort.log
3.2 加n后,按照数值排序 sort -t $'\t' -k 3n sort.log
3.3 不指定 FEnd 时,多个 -k 从前往后排序可以,从后往前不行 从后往前,多个 -k,数据符合预期 sort -t $'\t' -k 3n -k 1 sort.log
从后往前,多个 -k ,第三列相同时,按照第一列降序排列,数据符合预期 sort -t $'\t' -k 3n -k 1r sort.log
更换成从前往后 sort -t $'\t' -k 1 -k 3n sort.log
sort -t $'\t' -k 1 -k 3nr sort.log
通过 sort -t $'\t' -k 1 -k 3n sort.log 和 sort -t $'\t' -k 1 -k 3nr sort.log 返回的结果发现,在第一列相等时,无论其三列是正序排列,还是逆序排列,结果都一样,说明后边的 -k 未生效 当指定 FEend 后 sort -t $'\t' -k 1,1 -k 3nr sort.log
3.4 作用域 紧跟在字段后的选项(如"-k3n"的"n"和"-k2nr"的"n","r")称为私有选项,使用短横线写在字段外的选项(如"-n"、"-r")为全局选项。当没有为字段分配私有选项时,该排序字段将继承全局选项,所有选项包括但不限于"bfnrhM" 除了"b"选项外,其余选项无论是指定在FStart还是FEnd中都是等价的,对于"b"选项,指定在FStart则作用于FStart,指定在FEnd则作用于FEnd sort -t $'\t' -k1r,2 sort.log ,可以看出一、二列都是倒叙排列
3.5 注意 指定n选项按数值排序时, 由于"n"选项只能识别数字和负号"-",当排序时遇到无法识别字符时,将导致该key的排序立即结束,n选项绝对不会跨域进行比较 默认情况下,sort会进行一次 "最后的排序" ,按照默认规则对整行进行一次排序,这次排序称为"最后的排序"
sort -t $'\t' -k3n sort.log ,在第三列相等时,整行会按照 ASCII 进行最后的升序排列
sort -t $'\t' -k3,4n -s sort.log ,加了 -s 后,不会进行最后的排序(1000相同时,e在b的前边了),而是保留原排序
3.6 按照某个域中的第n个字符进行排序 sort -t $'\t' -k2.3,2.3 sort.log ,按第二列第三个字符进行排序
4、 -h 使用易读性数字(例如:2K、1G) sort -t $'\t' -k5h sort.log
sort -t $'\t' -k2,2 sort.log|uniq
sort -t $'\t' -k2,2 -u sort.log 会对第二列进行去重,而 sort -t $'\t' -k2,2 sort.log|uniq 会对整行进行去重(当然uniq也可以按照第二列进行去重)
sort整理完了,欢迎大牛指教

每天一个linux命令(1)sort

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

降序

在输出中去重

将排序结果输出到原文件
sort的默认输出是输出到标准输出,如果想把结果输出到文件,需要 sort file > newfile,但是如果想把结果输出到原文件这样就不行了,这时就需要 使用sort -o

以数值来排序
sort 默认是按照字符串排序的,这样就会出现10比3小的情况,sort -n 就可以告诉sort 以整数排序

-t 后面跟 分隔符
-k 后面跟数字,表示用第几列排序
如 sort -t : -k 2 表示把每行 以:号分割,按照第二列排序

banana:30:5.5
orange:20:3.4
apple:10:2.5

我们可以看到,当baidu 和soho都是100的时候,baidu排在前面,当当前域按照默认规矩,是从第一个域开始进行升序排序,因此baidu排在了sohu前面。

sort 支持 -k 2 -k3这种模式,如果你需要,你可以继续这么写下去

你仔细看看,在-k 3后面偷偷加上了一个小写字母r,r和-r的作用是一样,你也可以把前面的-n去掉 在r后面加上n,如下

其实-k 选项 功能很强大,语法[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
从逗号前后 分为两大部分,即-k 2,2,是严格使用第一个域排序,如果只设置-k 2 其实是按照从第一个域到行尾。逗号分开的每部分又有一个点表示子域,即-k 1.2表示 按照第一个域的第二个字符排序,Modifiers就是我们用到的n和r 如 -k 1.2nr 具体我们看下面的例子。

阅读更多 >>>  linux如何打开pcap

我们使用了-k 1.2,这就表示对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序。你会发现baidu因为第二个字母是a而名列榜首。sohu和 google第二个字符都是o,但sohu的h在google的o前面,所以两者分别排在第二和第三。这和之前说到的按照默认的排序规则 是不同的,当第一个域的第二个字符相同时,他不会去按照第一个字符排序,而是按照后面的字符排序,这是因为-k 1.2是对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序。而之前的夸域其实是一种假象。

-u只识别用-k设定的域,发现相同,就将后续相同的行都删除

但是这时候,却一行也没有删除。原来-u是会权衡所有-k选项,将都相同的才会删除,只要其中有一级不同都不会轻易删除的

可以用到b、d、f、i、n 或 r。

其中n和r你肯定已经很熟悉了。

b表示忽略本域的签到空白符号。

d表示对本域按照字典顺序排序(即,只考虑空白和字母)。

f表示对本域忽略大小写进行排序。

i表示忽略“不可打印字符”,只针对可打印字符进行排序。(有些ASCII就是不可打印字符,比如\a是报警,\b是退格,\n是换行,\r是回车等等)

请问STATA里sort,tsset的指令是什么意思?

Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。
1.sort指令是STATA数据库的维护的排序指令。附图
2.tsset指令是时间序列数据的估计命令。
如何创建一个截面数据文件?先把数据转移到stata中,然后用tsset命令。
tsset time, yearly(或者weekly、monthly、quarterly)
此时,一定要保证表示时间的那一列数据(即年份)的名称为time。
时间序列数据的回归主要需要注意以下几点:多重共线性(当样本量较小时,例如小于100)和序列相关性。而且需要考察t统计值、R2(adj-R2)、F统计量、D.W.值。
首先用reg命令进行回归,例如:reg y x1 x2 x3 x4 x5,并考察D.W.值(使用estat dwatson这一命令),如果D.W.值严重远离2,那么要进行调整(调整方法如黄色底纹),直到调整到2附近,然后考察回归结果是否符合经济学含义,倘若不符合,那么要注意是否受到多重共线性的影响(通过相关系数和vif值来判断)。在处理多重共线性时,可以用类似于处理截面数据的方法(剔除变量法),同时还要看D.W.值。此外,还可以用差分法来处理多重共线性(此方法用得不多)。
检验DW值的命令:estat dwatson
用广义差分法考虑序列相关性的命令(即调整DW值的命令):
reg y x1 x2 x3 x4 x5 L.y(后面还可以运用L.y L2.y)
用序列相关稳健标准误法考虑序列相关性的命令(即调整DW值的命令):
reg y x1 x2 x3 x4 x5, robust
考虑多重共线性的方法除了以上截面数据中用到的方法以外,还可以用差分法,然后再看vif值。
reg D.y D.x1 D.x2 D.x3 D.x4 D.x5
看不下去其他的回答了!没有人讲tsset么?
tsset是定义数据是一个时间序列数据。如果想对数据文件定义year为时间变量,则输入命令:
tsset year
具体命令为tsset
Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。
具体命令为tsset
Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。望采纳!
具体命令为tsset
Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。
sort指令是STATA数据库的维护的排序指令。tsset是定义数据是一个时间序列数据。如果想对数据文件定义year为时间变量,则输入命令:tsset year。
Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。
扩展资料
统计功能
Stata的统计功能很强,除了传统的统计分析方法外,还收集了近20年发展起来的新方法,如Cox比例风险回归,指数与Weibull回归,多类结果与有序结果的logistic回归,Poisson回归,负二项回归及广义负二项回归,随机效应模型等。具体说, Stata具有如下统计分析能力:
数值变量资料的一般分析:参数估计,t检验,单因素和多因素的方差分析,协方差分析,交互效应模型,平衡和非平衡设计,嵌套设计,随机效应,多个均数的两两比较,缺项数据的处理,方差齐性检验,正态性检验,变量变换等。
分类资料的一般分析:参数估计,列联表分析 ( 列联系数,确切概率 ) ,流行病学表格分析等。
等级资料的一般分析:秩变换,秩和检验,秩相关等
相关与回归分析:简单相关,偏相关,典型相关,以及多达数十种的回归分析方法,如多元线性回归,逐步回归,加权回归,稳键回归,二阶段回归,百分位数 ( 中位数 ) 回归,残差分析、强影响点分析,曲线拟合,随机效应的线性回归模型等。
其他方法:质量控制,整群抽样的设计效率,诊断试验评价, kappa等。
参考资料来源:百度百科-stata

linux命令之排序命令sort命令

sort命令是对文件进行排序,并将排序的结果输出到屏幕,不影响原文件
以行为单位,将每一行作为一个单位,相互比较,比较原则是从首字符向后,以此按ASCII码进行比较,最后升序输出

参数
-b 忽略每行前面开始处的空格
-d 只按照英文字母,数字,空格字符排序,忽略其他字符
-m 将几个排序好的文件进行合并
-n 依照数值的大小进行排序,如果是按照数值大小排序一定要加 -n ,否则就会出现 10 比2 小的情况,因为默认比较数值是先比较第1位的,后面的位不考虑
-o 将排序好的结果输出到文件, 也可以使用重定向符号 输出到文件中
-r 以相反的顺序来排序, 默认是升序

sort 的多列排序命令

Linux 下面 sort 可以按列排序,功能强大,但是其排序的说明有些晦涩。
举例下面这个命令:

上面的命令表示 -k 表示指定排序的规则,这里表示从第一列的第一个字符开始,到第一列的第六个字符结束,作为排序的key,r表示反向排序。基于上面的排序之后,按第二列到最后一列排序,其排序规则为根据数字大小进行排序。

如果用 --debug 参数,可以清晰的看到不同的 key 按顺序排序的过程。

linux sort命令 实例

sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字定义了用来排序的最小的字符序列。缺省情况下以整行为关键字按ASCII字符顺序进行排序。
改变缺省设置的选项主要有:
- m 若给定文件已排好序,合并文件。
- c 检查给定文件是否已排好序,如果它们没有都排好序,则打印一个出错信息,并以状态值1退出。
- u 对排序后认为相同的行只留其中一行。
- o 输出文件 将排序输出写到输出文件中而不是标准输出,如果输出文件是输入文件之一,sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。
改变缺省排序规则的选项主要有:
- d 按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。
- f 将小写字母与大写字母同等对待。
- I 忽略非打印字符。
- M 作为月份比较:“JAN”<“FEB”
<!--? <“DEC”。- r 按逆序输出排序结果。
+posl - pos2 指定一个或几个字段作为排序关键字,字段位置从posl开始,到pos2为止(包括posl,不包括pos2)。如不指定pos2,则关键字为从posl到行尾。字段和字符的位置从0开始。
- b 在每行中寻找排序关键字时忽略前导的空白(空格和制表符)。
- t separator 指定字符separator作为字段分隔符。
用sort命令对text文件中各行排序后输出其结果。请注意,在原文件的第二、三行上的第一个单词完全相同,该命令将从它们的第二个单词vegetables与fruit的首字符处继续进行比较。
$ cat text
vegetable soup
fresh vegetables
fresh fruit
lowfat milk
以sort排序后输出的结果:
$ sort text
fresh fruit
fresh vegetables
lowfat milk
vegetable soup
假设我在工作目录中有个名为test的文本文件,其内容是:
nihao
i love you
you are a genius
然后,执行:sort test(enter后)输出为:
i love you
nihao
you are a genius
另外,-r 选项是降序排列,默认是升序排列。
我推荐你个网站吧.
www.lx138.com
这个是你要查找的命令
http://www.lx138.com/page.php?ID=149
sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。排序关键字定义了用来排序的最小的字符序列。缺省情况下以整行为关键字按ASCII字符顺序进行排序。
改变缺省设置的选项主要有:
-
m
若给定文件已排好序,合并文件。
-
c
检查给定文件是否已排好序,如果它们没有都排好序,则打印一个出错信息,并以状态值1退出。
-
u
对排序后认为相同的行只留其中一行。
-
o
输出文件
将排序输出写到输出文件中而不是标准输出,如果输出文件是输入文件之一,sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。
改变缺省排序规则的选项主要有:
-
d
按字典顺序排序,比较时仅字母、数字、空格和制表符有意义。
-
f
将小写字母与大写字母同等对待。
-
I
忽略非打印字符。
-
M
作为月份比较:“JAN”<“FEB”
<!--?<“DEC”。
-
r
按逆序输出排序结果。
+posl
-
pos2
指定一个或几个字段作为排序关键字,字段位置从posl开始,到pos2为止(包括posl,不包括pos2)。如不指定pos2,则关键字为从posl到行尾。字段和字符的位置从0开始。
-
b
在每行中寻找排序关键字时忽略前导的空白(空格和制表符)。
-
t
separator
指定字符separator作为字段分隔符。
用sort命令对text文件中各行排序后输出其结果。请注意,在原文件的第二、三行上的第一个单词完全相同,该命令将从它们的第二个单词vegetables与fruit的首字符处继续进行比较。
$
cat
text
vegetable
soup
fresh
vegetables
fresh
fruit
lowfat
milk
以sort排序后输出的结果:
$
sort
text
fresh
fruit
fresh
vegetables
lowfat
milk
vegetable
soup

c语言中sort的用法详解

  c语言的学习很多是比较复杂的,那么c语言中sort的用法的用法你知道吗?下面我就跟你们详细介绍下c语言中sort的用法的用法,希望对你们有用。

  c语言中sort的用法的用法   sort是STL中提供的算法,头文件为#include

以及using namespace std; 函数原型如下:

  ?

  1

  2

  3

  4

  5

  template

  void sort ( RandomAccessIterator first, RandomAccessIterator last );

  template

  void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );

  使用第一个版本是对[first,last)进行升序排序,默认操作符为"<",第二个版本使用comp函数进行排序控制,comp包含两个在[first,last)中对应的值,如果使用"<"则为升序排序,如果使用">"则为降序排序,分别对int、float、char以及结构体排序例子如下:

  ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  32

  33

  34

  35

  36

  37

  38

  39

  40

  41

  42

  43

  44

  45

  46

  47

  48

  49

  50

  51

  52

  53

  54

  55

  56

  57

  58

  59

  60

  61

  62

  63

  64

  65

  66

  67

  68

  69

  70

  71

  #include

  #include

  #include

  using namespace std;

  struct product{

  char name[16];

  float price;

  };

  int array_int[5]={4,1,2,5,3};

  char array_char[5]={'a','c','b','e','d'};

  double array_double[5]={1.2,2.3,5.2,4.6,3.5};

  //结构比较函数(按照结构中的浮点数值进行排序)

  bool compare_struct_float(const product &a,const product &b){

  return a.price
<b.price;
  }

  //结构比较函数(按照结构中的字符串进行排序)

  bool compare_struct_str(const product &a,const product &b){

  return string(a.name)
<string(b.name);
  }

  //打印函数

  void print_int(const int* a,int length){

  printf("升序排序后的int数组:\n");

  for(int i=0; i
<length-1; i++)
  printf("%d ",a[i]);

  printf("%d\n",a[length-1]);

  }

  void print_char(const char* a,int length){

  printf("升序排序后的char数组:\n");

  for(int i=0; i
<length-1; i++)
  printf("%c ",a[i]);

  printf("%c\n",a[length-1]);

  }

  void print_double(const double* a,int length){

  printf("升序排序后的dobule数组:\n");

  for(int i=0; i
<length-1; i++)
  printf("%.2f ",a[i]);

  printf("%.2f\n",a[length-1]);

  }

  void print_struct_array(struct product *array, int length)

  {

  for(int i=0; i
<length; i++)
  printf("[ name: %s \t price: $%.2f ]\n", array[i].name, array[i].price);

  puts("--");

  }

  void main()

  {

  struct product structs[] = {{"mp3 player", 299.0f}, {"plasma tv", 2200.0f},

  {"notebook", 1300.0f}, {"smartphone", 499.99f},

  {"dvd player", 150.0f}, {"matches", 0.2f }};

  //整数排序

  sort(array_int,array_int+5);

  print_int(array_int,5);

  //字符排序

  sort(array_char,array_char+5);

  print_char(array_char,5);

  //浮点排序

  sort(array_double,array_double+5);

  print_double(array_double,5);

  //结构中浮点排序

  int len = sizeof(structs)/sizeof(struct product);

  sort(structs,structs+len,compare_struct_float);

  printf("按结构中float升序排序后的struct数组:\n");

  print_struct_array(structs, len);

  //结构中字符串排序

  sort(structs,structs+len,compare_struct_str);

  printf("按结构中字符串升序排序后的struct数组:\n");

  print_struct_array(structs, len);

  }

  sort函数的用法   做ACM题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。使用这个函数,需要包含头文件。

  这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。也就是说,排序的区间是[a,b)。简单来说,有一个数组int a[100],要对从a[0]到a[99]的元素进行排序,只要写sort(a,a+100)就行了,默认的排序方式是升序。

  拿我出的“AC的策略”这题来说,需要对数组t的第0到len-1的元素排序,就写sort(t,t+len);

  对向量v排序也差不多,sort(v.begin(),v.end());

  排序的数据类型不局限于整数,只要是定义了小于运算的类型都可以,比如字符串类string。

  如果是没有定义小于运算的数据类型,或者想改变排序的顺序,就要用到第三参数——比较函数。比较函数是一个自己定义的函数,返回值是bool型,它规定了什么样的关系才是“小于”。想把刚才的整数数组按降序排列,可以先定义一个比较函数cmp

  ?

  1

  2

  3

  4

  bool cmp(int a,int b)

  {

  return a>b;

  }

  排序的时候就写sort(a,a+100,cmp);

  假设自己定义了一个结构体node

  ?

  1

  2

  3

  4

  5

  struct node{

  int a;

  int b;

  double c;

  }

  有一个node类型的数组node arr[100],想对它进行排序:先按a值升序排列,如果a值相同,再按b值降序排列,如果b还相同,就按c降序排列。就可以写这样一个比较函数:

  以下是代码片段:

  ?

  1

  2

  3

  4

  5

  6

  bool cmp(node x,node y)

  {

  if(x.a!=y.a) return x.a

  if(x.b!=y.b) return x.b>y.b;

  return return x.c>y.c;

  }

  排序时写sort(arr,a+100,cmp);

  ?

  1

  2

  3

  4

  5

  qsort(s[0],n,sizeof(s[0]),cmp);

  int cmp(const void *a,const void *b)

  {

  return *(int *)a-*(int *)b;

  }

  sort函数的用法:对int类型数组排序   ?

  1

  2

  3

  4

  5

  6

  7

  int num[100];

  Sample:

  int cmp ( const void *a , const void *b )

  {

  return *(int *)a - *(int *)b;

  }

  qsort(num,100,sizeof(num[0]),cmp);

  sort函数的用法:对char类型数组排序(同int类型)   ?

  1

  2

  3

  4

  5

  6

  7

  char word[100];

  Sample:

  int cmp( const void *a , const void *b )

  {

  return *(char *)a - *(int *)b;

  }

  qsort(word,100,sizeof(word[0]),cmp);

  sort函数的用法:对double类型数组排序(特别要注意)   ?

  1

  2

  3

  4

  5

  6

  double in[100];

  int cmp( const void *a , const void *b )

  {

  return *(double *)a > *(double *)b ? 1 : -1;

  }

  qsort(in,100,sizeof(in[0]),cmp);

  sort函数的用法:对结构体一级排序   ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  struct In

  {

  double data;

  int other;

  }s[100]

  //按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写

  int cmp( const void *a ,const void *b)

  {

  return ((In *)a)->data - ((In *)b)->data ;

  }

  qsort(s,100,sizeof(s[0]),cmp);

  sort函数的用法:对结构体   ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  struct In

  {

  int x;

  int y;

  }s[100];

  //按照x从小到大排序,当x相等时按照y从大到小排序

  int cmp( const void *a , const void *b )

  {

  struct In *c = (In *)a;

  struct In *d = (In *)b;

  if(c->x != d->x) return c->x - d->x;

  else return d->y - c->y;

  }

  qsort(s,100,sizeof(s[0]),cmp);

  sort函数的用法:对字符串进行排序   ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  struct In

  {

  int data;

  char str[100];

  }s[100];

  //按照结构体中字符串str的字典顺序排序

  int cmp ( const void *a , const void *b )

  {

  return strcmp( ((In *)a)->str , ((In *)b)->str );

  }

  qsort(s,100,sizeof(s[0]),cmp);

  sort函数的用法:计算几何中求凸包的cmp   ?

  1

  2

  3

  4

  5

  6

  7

  8

  9

  int cmp(const void *a,const void *b) //重点cmp函数,把除了1点外的所有点,旋转角度排序

  {

  struct point *c=(point *)a;

  struct point *d=(point *)b;

  if( calc(*c,*d,p[1]) < 0) return 1;

  else if( !calc(*c,*d,p[1]) && dis(c->x,c->y,p[1].x,p[1].y) < dis(d->x,d->y,p[1].x,p[1].y)) //如果在一条直线上,则把远的放在前面

  return 1;

  else return -1;

  }

猜你喜欢:

1. c中的用法

2. c语言中逻辑或的用法

3. c语言strcmp的用法

4. c语言中free的用法

5. c语言pow的用法

6. c语言中putchar的用法

阅读更多 >>>  linux什么安装模式

</string(b.name);
</b.price;

文章数据信息:

本文主要探讨:"sort命令详解,linux sort命令参数及用法详解", 浏览人数已经达到30次, 首屏加载时间:0.667 秒。