linux数据处理(三)

122 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天

2. sort 命令:为文件排序

我们用 sort 命令来举个例子:

sort name.txt

sort 命令将 name.txt 文件中的行按照首字母的英文字典顺序进行了排列。

sort 命令并不区分大小写,小写字母开头的 jude 还是排在 John 之后。

-o 参数:将排序后的内容写入新文件

如果你打开 name.txt 文件,你会发现,经过了 sort 命令的“洗礼”,name.txt 中的内容还是维持原来的顺序。

单独使用 sort 命令是不会真正改变文件内容的,只是把排序结果显示在终端上。

那我们要存储排序结果到新的文件怎么办呢?可以用 -o 参数。

o 是 output 的首字母,表示“输出”,就是将排序结果输出到文件中。

sort -o name_sorted.txt name.txt

name.txt 经过 sort 命令排序之后的内容被储存在了新的文件 name_sorted.txt 中,而 name.txt 的内容是不变的。

-r 参数:倒序排列

-r 参数中的 r 是 reverse 的缩写,是“相反”的意思,与普通的仅用 sort 命令正好相反。

sort -r name.txt

-R 参数:随机排序

R 是英语 random 的首字母,表示“随机的,任意的”。

-R 参数比较“无厘头”,因为它会让 sort 命令的排序变为随机,就是任意排序,也许每次都不一样。

但在有些时候,-R 参数还是很有用的。

sort -R name.txt

-n 参数:对数字排序

对数字的排序有点特殊。默认仅用 sort 命令的时候,是不区分字符是否是数字的,会把这些数字看成字符串,按照 1-9 的顺序来排序。例如 138 会排在 25 前面,因为 1 排在 2 的前面。

那如果我们要 sort 命令识别整个数字,比如按照整个数值的大小顺序来说,25 应该排在 138 前面,那该怎么办呢?

就可以请出我们的 -n 参数了。n 是 number 的缩写。是英语“数字”的意思。-n 参数用于对数字进行排序,按从小到大排序。

为了演示,我们再用文本编辑器来创建一个文件,就叫 number.txt 好了。

里面随便填一些数字,每行一个:

12
9
216
28
174
35
68

然后用 sort 不加 -n 参数和加上 -n 参数分别测试:

12
174
216
28
35
68
9
---------------------------分割线
9
12
28
35
68
174
216

可以看到,不加 -n 参数时,sort 就会把这些数字看成字符串,按字符依次来排序,按照 1-9 的顺序。

加上 -n 参数,就会把各行的数字看成一个整体,按照大小从小到大来排序了。