科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Linux操作系统中排序命令Sort的使用方法

Linux操作系统中排序命令Sort的使用方法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出。如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序。

作者:kid 来源:赛迪网 2008年6月19日

关键字: 命令行 Linux 技巧

  • 评论
  • 分享微博
  • 分享邮件

要除去重复行排序,请输入:

sort -d -f -u fruits

-u 标志告诉 sort 命令除去重复的行,使文件中的每一行唯一。此命令序列显示: apple%%bananaORANGEPersimmon不仅除去重复的 apple,而且也除去了 banana 和 ORANGE。除去这些是因为 -d 标志忽略 %% 这个特殊字符,-f 标志忽略大小写差异。

要如上面那样排序,除去重复的实例(除非是大写字母或标点不同),请输入:

sort -u +0 -d -f +0 fruits输入 +0 -d -f 完成的排序与示例 3 中 -d -f 的排序类型相同,+0 进行另一项比较以区分不一样的行。这防止 -u 标志将它们除去。 示例 1 所示的 fruits 文件中,添加的 +0 将 %%banana 与 banana 及 ORANGE 与 orange 区分开来。然而,apple 的两个实例是相同的,所以其中之一被删除。apple%%bananabananaORANGEorangePersimmon

要指定分隔字段的字符,请输入:

sort -t: +1 vegetables

此命令序列排序 vegetables 文件,对每一行上第一个冒号后的文本进行比较。+1 告诉 sort 命令忽略第一字段,从第二字段的开始到该行的结束进行比较。-t: 标志告诉 sort 命令冒号分隔字段。

如果 vegetables 包含:

yams:104turnips:8potatoes:15carrots:104green beans:32radishes:5lettuce:15那么,将 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 C 的情况下,sort 命令将显示:carrots:104yams:104lettuce:15potatoes:15green beans:32radishes:5turnips:8注意数字没有按照数字排序。当用字典式分类从左至右比较每一个字符时出现这种情况。换句话说,3 在 5 之前,所以 32 在 5 之前。

要排序数字,请输入:

sort -t: +1 -n vegetables

此命令序列按照第二个字段对 vegetables 文件进行数字排序。如果 vegetables 文件与示例 6 中的相同,那么 sort 命令将显示: radishes:5turnips:8lettuce:15potatoes:15green beans:32carrots:104yams:104

要对多个字段排序,请输入:

sort -t: +1 -2 -n +0 -1 -r vegetables或 sort -t: -k2,2 n -k1,1 r vegetables

此命令序列对第二字段(+1 -2 -n)进行数字排序。在这个顺序中,它以逆字母顺序(+0 -1 -r)对第一字段排序。将 LC_ALL、LC_COLLATE 或 LANG 环境变量设置为 C 的情况下,输出将类似于: radishes:5turnips:8potatoes:15lettuce:15green beans:32yams:104carrots:104

此命令按数字顺序对行排序。当两行数字相同时,它们以逆字母顺序出现。

要使用排序的文本替换原始文件,请输入:

sort -o vegetables vegetables此命令序列将排序输出存入 vegetables 文件( -o vegetables)。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章