iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux下sort命令怎么用
  • 131
分享到

Linux下sort命令怎么用

2023-06-27 16:06:53 131人浏览 泡泡鱼
摘要

这篇文章主要为大家展示了“linux下sort命令怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下sort命令怎么用”这篇文章吧。sort 是 Linux 的排序命令,而且可以依

这篇文章主要为大家展示了“linux下sort命令怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下sort命令怎么用”这篇文章吧。

sort 是 Linux 的排序命令,而且可以依据不同的数据类型来进行排序。sort 将文件的每一行作为一个单位,相互比较。比较原则是从首字符向后,依次按 ASCII 码值进行比较,最后将它们按升序输出。

Linux下sort命令怎么用

安装

你不必安装 sort ,因为它向来都包含在 POSIX 系统里。在大多数 Linux 系统中,sort 命令来自 GNU 组织打包的实用工具集合中。在其他的 POSIX 系统中,像 BSD 和 Mac,默认的 sort 命令不是 GNU 提供的,所以有一些选项可能不一样。本文中我尽量对 GNU 和 BSD 两者的实现都进行说明。

按字母顺序排列行

sort 命令默认会读取文件每行的第一个字符并对每行按字母升序排序后输出。两行中的第一个字符相同的情况下,对下一个字符进行对比。例如:

$ cat distro.listSlackwareFedoraRed Hat Enterprise LinuxubuntuArch1337MintMageiaDebian$ sort distro.list1337ArchDebianFedoraMageiaMintRed Hat Enterprise LinuxSlackwareUbuntu

使用 sort 不会改变原文件。sort 仅起到过滤的作用,所以如果你希望按排序后的格式保存数据,你需要用 > 或 tee 进行重定向。

$ sort distro.list | tee distro.sorted1337ArchDebian[...]$ cat distro.sorted1337ArchDebian[...]

按列排序

复杂数据集有时候不止需要对每行的第一个字符进行排序。例如,假设有一个动物列表,每个都有其种和属,用可预见的分隔符分隔每一个“字段”(即数据表中的“单元格”)。这类由数据表导出的格式很常见,CSV(以逗号分隔的数据comma-separated values)后缀可以标识这些文件(虽然 CSV 文件不一定用逗号分隔,有分隔符的文件也不一定用 CSV 后缀)。以下数据作为示例:

Aptenodytes;forsteri;Miller,JF;1778;EmperorPyGoscelis;papua;Wagler;1832;GentooEudyptula;minor;Bonaparte;1867;Little BlueSpheniscus;demersus;Brisson;1760;AfricanMegadyptes;antipodes;Milne-Edwards;1880;Yellow-eyedEudyptes;chrysocome;Viellot;1816;Southern RockhopperTorvaldis;linux;Ewing,L;1996;Tux

对于这组示例数据,你可以用 –field-separator (在 BSD 和 Mac 用 -t,在 GNU 上也可以用简写 -t )设置分隔符为分号(因为该示例数据中是用分号而不是逗号,理论上分隔符可以是任意字符),用 –key(在 BSD 和 Mac 上用 -k,在 GNU 上也可以用简写 -k)选项指定哪个字段被排序。例如,对每行第二个字段进行排序(计数以 1 开头而不是 0):

sort --field-separator=";" --key=2Megadyptes;antipodes;Milne-Edwards;1880;Yellow-eyedEudyptes;chrysocome;Viellot;1816;Sothern RockhopperSpheniscus;demersus;Brisson;1760;AfricanAptenodytes;forsteri;Miller,JF;1778;EmperorTorvaldis;linux;Ewing,L;1996;TuxEudyptula;minor;Bonaparte;1867;Little BluePygoscelis;papua;Wagler;1832;Gentoo

结果有点不容易读,但是 Unix 以构造命令的管道方式而闻名,所以你可以使用 column 命令美化输出结果。使用 GNU column:

$ sort --field-separator=";" \\--key=2 penguins.list | column --table --separator ";"Megadyptes   antipodes   Milne-Edwards  1880  Yellow-eyedEudyptes     chrysocome  Viellot        1816  Southern RockhopperSpheniscus   demersus    Brisson        1760  AfricanAptenodytes  forsteri    Miller,JF      1778  EmperorTorvaldis    linux       Ewing,L        1996  TuxEudyptula    minor       Bonaparte      1867  Little BluePygoscelis   papua       Wagler         1832  Gentoo

对于初学者可能有点不好理解(但是写起来简单),BSD 和 Mac 上的命令选项:

$ sort -t ";" \-k2 penguins.list | column -t -s ";"Megadyptes   antipodes   Milne-Edwards  1880  Yellow-eyedEudyptes     chrysocome  Viellot        1816  Southern RockhopperSpheniscus   demersus    Brisson        1760  AfricanAptenodytes  forsteri    Miller,JF      1778  EmperorTorvaldis    linux       Ewing,L        1996  TuxEudyptula    minor       Bonaparte      1867  Little BluePygoscelis   papua       Wagler         1832  Gentoo

当然 -k 不一定非要设为 2。任意存在的字段都可以被设为排序的键。

逆序排列

你可以用 –reverse(BSD/Mac 上用 -r,GNU 上也可以用简写 -r)选项来颠倒已经排好序的列表。

$ sort --reverse alphabet.listzyxw[...]

你也可以把输出结果通过管道传给命令 tac 来实现相同的效果。

按月排序(仅 GNU 支持)

理想情况下,所有人都按照 ISO 8601 标准来写日期:年、月、日。这是一种合乎逻辑的指定精确日期的方法,也可以很容易地被计算机理解。也有很多情况下,人类用其他的方式标注日期,包括用很名字随意的月份。

幸运的是,GNU sort 命令能识别这种写法,并可以按月份的名称正确排序。使用 –month-sort(-M)选项:

$ cat month.listNovemberOctoberSeptemberApril[...]$ sort --month-sort month.listJanuaryFebruaryMarchAprilMay[...]NovemberDecember

月份的全称和简写都可以被识别。

人类可读的数字排序(仅 GNU 支持)

另一个人类和计算机的常见混淆点是数字的组合。例如,人类通常把 “1024 kilobytes” 写成 “1KB”,因为人类解析 “1 KB” 比 “1024” 要容易且更快(数字越大,这种差异越明显)。对于计算机来说,一个 9 KB 的字符串要比诸如 1 MB 的字符串大(尽管 9 KB 是 1 MB 很小一部分)。GNU sort 命令提供了–human-numeric-sort(-h)选项来帮助正确解析这些值。

$ cat sizes.list2M12MB1k9k9007000$ sort --human-numeric-sort90070001k9k2M12MB

有一些情况例外。例如,“16000 bytes” 比 “1 KB” 大,但是 sort 识别不了。

$ cat sizes0.list2M12MB160001k$ sort -h sizes0.list160001k2M12MB

逻辑上来说,这个示例中 16000 应该写成 16 KB,所以也不应该全部归咎于GNU sort。只要你确保数字的一致性,–human-numeric-sort 可以用一种计算机友好的方式解析成人类可读的数字。

随机排序(仅 GNU 支持)

有时候工具也提供了一些与设计初衷相悖的选项。某种程度上说,sort 命令提供对一个文件进行随机排序的能力没有任何意义。这个命令的工作流让这个特性变得很方便。你可以用其他的命令,像 shuf ,或者你可以用现在的命令添加一个选项。不管你认为它是一个臃肿的还是极具创造力的用户体验设计,GNU sort 命令提供了对文件进行随机排序的功能。

最纯粹的随机排序格式选项是 –random-sort 或 -R(不要跟 -r 混淆,-r 是 –reverse 的简写)。

$ sort --random-sort alphabet.listdmpa[...]

每次对文件运行随机排序都会有不同的结果。

以上是“Linux下sort命令怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: Linux下sort命令怎么用

本文链接: https://www.lsjlt.com/news/311783.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux下sort命令怎么用
    这篇文章主要为大家展示了“Linux下sort命令怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下sort命令怎么用”这篇文章吧。sort 是 Linux 的排序命令,而且可以依...
    99+
    2023-06-27
  • Linux中sort命令怎么用
    这篇文章主要为大家展示了“Linux中sort命令怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中sort命令怎么用”这篇文章吧。Linux常用命令sort命令将输入行按照键值字...
    99+
    2023-06-28
  • Linux常用命令sort怎么用
    这篇文章给大家分享的是有关Linux常用命令sort怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux常用命令sort 命令用于将文本文件内容加以排序,sort 可针对文本文件的内容,以行为单位来排序...
    99+
    2023-06-28
  • Linux系统sort命令怎么用
    这篇文章将为大家详细讲解有关Linux系统sort命令怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在Linux系统中sort命令只要的作用就是对文本文件内容进行排序,以空格作为字段分隔符,将一行分...
    99+
    2023-06-28
  • sort命令怎么在Linux中使用
    这期内容当中小编将会给大家带来有关sort命令怎么在Linux中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。名称:sort位置:/usr/bin/sort权限:所有用户用法: sort [OPTIO...
    99+
    2023-06-12
  • Linux基础命令---sort
    sort以行为单位,对文本文件进行排,并输出排序结果。默认情况下,以每一行为一个单位,从首字符开始按照ASCII码向后逐个比较。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。...
    99+
    2023-06-06
  • Linux的sort命令是怎样用的
    今天就跟大家聊聊有关Linux的‘sort’命令是怎样用的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。sort是什么Sort是用于对单个或多个文本文件内容进行排序的Linux程序。...
    99+
    2023-06-16
  • Linux下date命令怎么用
    小编给大家分享一下Linux下date命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!显示时间是个常用的命令,在写shell脚本中也经常会用到与日期相关文...
    99+
    2023-06-12
  • Linux下ps命令怎么用
    小编给大家分享一下Linux下ps命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在Linux下ps命令是用于查看系统上运行的进程的最基本的命令之一。它提...
    99+
    2023-06-13
  • Linux下timeout命令怎么用
    小编给大家分享一下Linux下timeout命令怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!timeout是一个命令行实用程序,它运行指定的命令,如果在给定的时间段后仍在运行,则终止该命令。timeout命令是GN...
    99+
    2023-06-28
  • linux下wget命令怎么用
    小编给大家分享一下linux下wget命令怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、使用wget下载单个文件以下的例子是从网络下载一个文件并保存在当前目录wget http://cn.wordpre...
    99+
    2023-06-21
  • Linux下zcat命令怎么用
    小编给大家分享一下Linux下zcat命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!zcat命令用于不真正解压缩文件,就能显示压缩包中文件的内容的场合。...
    99+
    2023-06-28
  • Linux下ls命令怎么用
    这篇文章给大家分享的是有关Linux下ls命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。假如我们有这样的一个文件夹,我们用tree命令查看它的目录结构:用法1:列出/home/alvin/test_di...
    99+
    2023-06-15
  • Linux下man命令怎么用
    这篇文章主要为大家展示了“Linux下man命令怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下man命令怎么用”这篇文章吧。man就是manual的缩写,用来查看系统中自带的各...
    99+
    2023-06-17
  • Linux下Findmnt命令怎么用
    小编给大家分享一下Linux下Findmnt命令怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Findmnt 命令用于查找挂载的文件系统。它用来列出安装设备,当需要时也可以挂载或卸载设备,它是 util-linux ...
    99+
    2023-06-27
  • Linux下ip命令怎么用
    这篇文章主要介绍了Linux下ip命令怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用i...
    99+
    2023-06-28
  • Linux下tree命令怎么用
    这篇文章给大家分享的是有关Linux下tree命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。tree是一种递归目录列表命令,产生一个深度缩进列表文件,这是彩色的ALA dircolors如果ls_col...
    99+
    2023-06-28
  • Linux下more命令怎么用
    小编给大家分享一下Linux下more命令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我们在 Linux 环境下工作时,每天肯定会跟各种各样的文本文件打交...
    99+
    2023-06-27
  • Linux下journalctl命令怎么用
    这篇文章主要为大家展示了“Linux下journalctl命令怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下journalctl命令怎么用”这篇文章吧。日志管理工具journa...
    99+
    2023-06-28
  • Linux下touch命令怎么用
    这篇文章给大家分享的是有关Linux下touch命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。touch 命令基本用法提起 touch 命令,大家想到的肯定是它的两个用法:改变时间戳创建新文件这两种用法...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作