偶尔,我们都会遇到这样一种情况,我们有一个巨大的文本文件,想要对数据进行相应的排序。
尤其是在您收到表格形式的数据时。
当然,如果您可以访问 GUI,那么有多种工具可以毫不费力地为您进行排序,但是如何按列对数据进行排序呢? bash 直接地?
在本指南中,我将向您介绍如何按列对数据进行排序 bash.
如何按列排序 bash
在本指南中,我将使用 sort 命令按列对数据进行排序。
要对列进行排序,您必须使用 -k
标志后跟要排序的列的编号。
因此,使用 sort 命令对列进行排序的语法如下所示:
sort -k [Column_number] Filename
但在进入排序示例之前,让我先分享一下 sort 命令如何默认对数据进行排序:
- 按字母顺序对数据进行排序
- 数字总是在字母之前
- 小写字母优先于大写字母
总之,它看起来像这样: Numbers>Lowercase>Uppercase
.
为了本教程,我将使用一个名为 Students.txt
其中包含7名学生的基本数据如下:
Name Enrollment_No City
Sagar 181240116054 Nadiad
Milan 181240116019 Aurangabad
Anurag 181240116018 Ahmedabad
Priya 181240116001 Ananad
Abhiman 181240116050 Varanasi
Aayush 181240115019 Karnataka
Ankush 181240116056 Bhubaneswar
假设我想对中的第二列进行排序 Student.txt
文件,所以我将使用以下内容:
sort -k 2 Students.txt
如您所见,第二列按升序排序(默认行为)。
但是,如果您想更改数据的排序方式怎么办?
按数字对列进行排序 bash
您可能想知道如果数字默认排序那么我为什么要写这个?
出色地, 问题是默认情况下排序命令只会对前导字符中的数字进行排序。
让我分享一个 example 这里。 在这里,我创建了一个在一列中包含随机数的示例文件,并使用了没有任何其他选项的排序命令:
正如您所看到的,结果一团糟!
要解决此问题,您需要使用 -n
使用现有命令标记:
sort -n -k [Column_number] Filename

按列反向排序 bash
您可能会遇到希望按降序对列进行排序的情况。
为此,您必须使用 -r
旗帜:
sort -r -k [Column_number] Filename
在这里,我对第 3 列进行了反向排序:
sort -r -k 3 Students.txt

在这里你有它!
排序命令可以做更多……
与多个标志一起使用时的排序命令可以为您创造奇迹,尤其是当您有多个文件要处理时。
为此,我们有专门的指南介绍如何使用带有多个示例的 sort 命令:
我希望本指南已经解决了您之前的疑问。
如果您仍有疑问,请随时在评论中提问。