txt 加逗号(txt后面加逗号怎么处理)

Linux系统下,sort命令是用于文件或文本排序,其排序功能很实用,很强大。本文将使用多个例子详细地讲解sort命令的使用方法。

1语法与选项

Sort命令的语法如下:

sort

说明:

Sort命令可针对文本文件的内容或管道中的文本内容,以行为单位来排序。

Sort命令常用选项如下表所示:

序号

选项

选项说明

1

-b

忽略每行前面开始出的空格字符

2

-c

检查文件是否已经按照顺序排序

3

-f

排序时,忽略大小写字母

4

-M

将前面3个字母依照月份的缩写进行排序

5

-n

依照数值的大小排序

6

-o<输出文件>

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

7

-r

以相反的顺序来排序

8

-t<分隔字符>

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

9

-k

选择以哪个区间进行排序

10

-C

检查文件是否已排好序

说明:

选项-c和-C都检查文件是否已经排好序,但是功能还是有区别,

-c检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1;

-C检查文件是否已排好序,如果乱序,不输出内容,仅返回1。

2初识sort命令

本节通过一个简单的文本文件排序,初步认识sort命令如何使用。用于排序的文本文件1.txt内容如下:

# cat 1.txt

one

failed

given

weekly

waiting

missed

survived

one

won

该文件从某个英文诗歌中截取的某列。使用sort命令排序结果如下:

#

sort 1.txt

failed

given

missed

one

one

survived

waiting

weekly

won

由排序结果可见,

排序是按照ASCII码升序排序

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

使用文件重定向,可以将排序后的文件内容进行保存。下例中将排序后的文件内容保存到名为result的文件中,命令如下所示:

#

sort 1.txt > result.txt

3选项“-u”的用法

Sort命令的

“-u”选项,其作用就是在输出行中去除重复行,只保留一行

。例如第二小节中文本文件1.txt中包含两个one单词,排序后两个one单词前后排在一起,如果使用“-u”选项,执行结果如下:

#

sort -u 1.txt

failed

given

missed

one

survived

waiting

weekly

won

从上面排序结果可以看到,两个one单词只保留了一个,去掉了重复的一个。

4选项“-r”的用法

Sort命令的

“-r”选项,其作用是改变排序类型:升序还是降序

。Sort命令默认的排序方式是升序,如果想改成降序,使用选项-r即可。对文本文件1.txt使用-r选项,结果如下:

#

sort -ur 1.txt

won

weekly

waiting

survived

one

missed

given

failed

本例中使用了两个选项“-u”和“-r”,最后去重后降序排序。

上面都是针对单词的ASCII码进行的排序,如果针对数字字符,使用选项“-r”,其排序是按照数字大小排序还是仍然按照ASCII码排序?文本文件2.txt是一组数字,如下所示:

#

cat 2.txt

17

13

100

33

6

42

9

39

52

40

58

22

使用选项“-r”进行排序,结果如下:

#

sort -r 2.txt

9

6

58

52

42

40

39

33

22

17

13

100

如上排序结果可以看出,

-r降序排序也只是对ASCII码进行排序,跟字符和数字无关。

5选项“-n”的用法

第四小节选项“-r”对数字无法进行大小比较排序,而

选项“-n”则可以将待比较的内容当作数字进行大小比较

。使用选项“-n”对文本文件2.txt进行排序,结果如下:

#

sort -nr 2.txt

100

58

52

42

40

39

33

22

17

13

9

6

本例使用两个选项“-n”和“-r”进行排序,首先-n是将排序内容按照数字进行大小比较,然后选项-r是进行降序排序。输出结果看出,确实按照数字大小比较,并进行了降序排序。

6选项“-t”、“-k”的用法

Sort命令的

选项“-t”,其作用是指定字段分隔符;选项“-k”的作用是指定对第几列字段进行排序

。这两个选项参数一般配合用,比如文本文件中出现多个字段,对其中某列字段进行排序的场景等。

例如文本文件3.txt使用逗号“,”进行不同字段的分割,文件内容如下所示:

# cat 3.txt

2016-01-18,72650,0102:6,0400:40002

2016-01-19,317020,2999:347,0102:6705

2016-01-20,716550,0102:6,2999:78653

2016-01-21,497000,0102:10,2999:254006

2016-01-22,167620,0102:2,2999:232012

2016-01-23,100220,2999:182,0102:1014

2016-01-24,113240,2999:1183,0102:21842

2016-01-25,315390,2999:9096,1101:49865

2016-01-26,139620,0102:19,2999:179545

2016-01-27,261840,0102:13,2999:22818

2016-01-28,157660,1101:568,2999:14246

如上文本内容使用逗号“,”分割,第一列是日期,第二列数量,第三四列是“代码:数量”格式内容。如果对第二列进行降序排序,其命令如下:

#

sort -t "," -nrk2 3.txt

2016-01-20,716550,0102:6,2999:78653

2016-01-21,497000,0102:10,2999:254006

2016-01-19,317020,2999:347,0102:6705

2016-01-25,315390,2999:9096,1101:49865

2016-01-27,261840,0102:13,2999:22818

2016-01-22,167620,0102:2,2999:232012

2016-01-28,157660,1101:568,2999:14246

2016-01-26,139620,0102:19,2999:179545

2016-01-24,113240,2999:1183,0102:21842

2016-01-23,100220,2999:182,0102:1014

2016-01-18,72650,0102:6,0400:40002

解析:

“sort -t "," -nrk2 3.txt”使用了四个选项,分别是“-t”,指定了字段分隔符“,”;“-n”表示排序字段按照数字大小排序;“-r”表示降序排序;“-k2”指定对第二列进行排序。

上述命令也可以写成“

sort -t "," -k2nr,2 3.txt

”或“

sort -t "," -k2nr 3.txt

”,其输出结果是一样的。

多字段排序

如果需要对文本文件的多个字段进行排序,需要使用“-t”和“-k”选项,比如文本文件4.txt内容如下:

# cat 4.txt

3,5,6

4,7,9

5,8,3

3,4,2

5,5,3

1,2,3

2,3,4

4,5,6

5,6,7

7,8,9

6,7,8

如果对文件4.txt,第一列降序,第二列升序排序,其命令和结果如下:

#

sort -t "," -k 1nr,1 -k 2n,2 4.txt

7,8,9

6,7,8

5,5,3

5,6,7

5,8,3

4,5,6

4,7,9

3,4,2

3,5,6

2,3,4

1,2,3

如上排序结果,第一列按照降序排序,第二列按照升序排序。

注意:

“-k”选项在进行多列排序时的参数格式“-k 1nr,1 -k 2n,2”。

7选项“-o”的用法

Sort命令的

选项“-o”,其作用是将排序结果输出到文件中

,其命令格式为:“sort … -o filename”。上文提到,sort命令排序结果可以使用重定向,保存输出到其他文件中。如果排序内容保存到原文件中中,直接使用重定向,会覆盖清空文件。

比如下面命令:

# cat result.txt

failed

given

missed

one

one

survived

waiting

weekly

won

#

sort result.txt > result.txt

# cat result.txt

#

可以看出,使用sort命令输出重定向后,原文件result.txt被清空。

如果将排序结果输出覆盖原文件,只能使用选项“-o”,命令如下:

# cat 5.txt

3,5,6

4,7,9

5,8,3

3,4,2

5,5,3

1,2,3

2,3,4

4,5,6

5,6,7

7,8,9

6,7,8

#

sort -t "," -k 1nr,1 -k 2n,2 5.txt -o 5.txt

# cat 5.txt

7,8,9

6,7,8

5,5,3

5,6,7

5,8,3

4,5,6

4,7,9

3,4,2

3,5,6

2,3,4

1,2,3

从上面命令和执行结果可以看出选项“-o”,能够将sort命令输出内容输出到输入文件中。这就是选项“-o”和重定向“>”的不同之处了。

8选项“-M”的用法

Sort命令的

选项“-M”,其作用是把首三个字母作为月份缩写,然后进行月份排序

。例如文件6.txt内容如下:

# cat 6.txt

mar

dec

oct

sep

feb

aug

使用选项“-M”进行排序,结果如下:

# sort -M 6.txt

feb

mar

aug

sep

oct

dec

从排序结果看出,文件内容按照月份缩写从小到大进行了排序。

注意:

sort命令需要至少3个字符来确认月份名称。

温馨提示:本文内容由互联网用户自发贡献,该文观点仅代表作者本人,如有侵权,请联系删除!