Linux为系统管理员提供了很多有用的工具。这些工具为管理员提供了开发人员权限,因此管理员可以轻松地更改、修改、过滤和排序数据。那种 是另一个小而有力的工具。在本教程中,我们将研究排序的不同用法示例。
示例文件
我们将使用以下名为 fruits.txt
apple 1 good JAN grape 5 bad DEC banana 2 good MAR melon 10 bad JUN

排序命令语法
sort
命令将使用以下语法。
sort [OPTION]... [FILE]... sort [OPTION]... --files0-from=F
排序命令示例
排序可用于文件或标准输入。在本例中,我们将根据每一行的开头对文件内容进行排序。正如我们看到的,我们的文件内容是按字母顺序排序的。
$ sort fruits.txt

降序 排序
默认情况下,排序是升序进行的。有时可以使用反向或降序模式进行排序。这可以通过提供 -r
参数
$ sort -r fruits.txt

将排序命令输出添加到文件
排序操作完成后,新的排序内容被打印到标准输出。另一种保存输出的方法是写入文件。
$ sort -r fruits.txt > reverse_fruits.txt

忽略大小写
默认情况下,排序是区分大小写的操作,这意味着在对字符进行排序时,会检测到大小写,并相应地对其进行排序。如果这不适合你,它可以被禁用 -f
或 --ignore-case
参数。
$ sort -f fruits.txt

如果已排序,请检查指定的文件
排序的另一个有用功能是检查文件的状态(如果已经排序)。如果已经排序,将没有输出,但如果没有排序,将给出有关无序的单行信息。
$ sort -c fruits.txt
对多个文件排序
有时要排序的数据不在单个文件中。Sort命令没有使用多个文件的本机功能。在这里,其他bash工具提供了将多个文件合并到单个标准输入流的解决方案。在这个例子中,我们将 cat
多个文件并重定向到标准输入排序。
$ cat fruits.txt reverse_fruits.txt | sort

排序 按给定列
到目前为止,我们已经从行的第一个字符开始对数据进行了排序。我们的数据可能以结构化的方式包含列,我们可能希望使用除第一列以外的其他列进行排序。这可以通过其他bash工具完成,但sort提供了一种简单的方法。
$ sort -k2 fruits.txt

排序 按多列
按列排序很容易实现,但是如果我们想按多个列排序,会发生什么呢。在这里 -k
参数可以与下面的多个值一起再次使用。我们将先用第1列排序,然后用第3列排序
$ sort -k2,3 fruits.txt

按数字排序
到目前为止,排序操作是用字母表和ASCII来完成的。通过sort可以检测数字并进行相应的排序。例如,在正常的排序操作1中 低于10 但如果我们想按数值排序 -n
参数的用法如下。
$ sort -n -k2 fruits.txt

按大小排序
在使用Linux工具时,大小信息可以用不同的方式表示,默认的表达式方法是在前面加上一个度量名称,如 1GB
, 128MB
Sort支持这种类型的表达式,这对于简单的排序实现非常好。
$ ls -lh | sort -k 5 -h

排序依据 日期
Unix和Linux月份的表达式如下 JAN
, JUN
Sort可以支持这种类型的月份表达式并对它们进行排序。这些蛾子列在第4列,我们将根据第4列的月份值和 -M
参数。
$ sort -k4 -M fruits.txt
