热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

linuxsort命令的问题,Linuxsort命令的注意点

正常情况测试数据[rootcentos7-18test]#ls11023456789abcdtest2可以看到,以字典序排序,字母比数字的值要大使用so

正常情况

测试数据

[root@centos7-18 test]# ls

1 10 2 3 4 5 6 7 8 9 a b c d test2

可以看到,以字典序排序,字母比数字的值要大

使用sort -n进行按照数值排序

[root@centos7-18 test]# ls |sort -n

a

b

c

d

test2

1

2

3

4

5

6

7

8

9

10

可以看到,以数值排序,数字比字母的值要大

按照数值排序之后,再逆序

[root@centos7-18 test]#

[root@centos7-18 test]# ls |sort -nr

10

9

8

7

6

5

4

3

2

1

test2

d

c

b

a

结果正常

特殊情况

构造数据

[root@centos7-18 test2]# touch database-2019-06-01_0300.tar.gz database-2019-04-01_0300.tar.gz database-2019-04-15_0300.tar.gz database-2019-05-01_0300.tar.gz database-2019-05-15_0300.tar.gz database-2019-08-15_0300.tar.gz database-2019-06-15_0300.tar.gz database-2019-07-01_0300.tar.gz database-2019-07-15_0300.tar.gz database-2019-08-01_0300.tar.gz database-2019-09-20_0300.14.tar.gz database-2019-09-01_0300.tar.gz database-2019-09-15_0300.9.tar.gz database-2019-09-18_0300.12.tar.gz database-2019-09-19_0300.13.tar.gz database-2019-09-21_0300.15.tar.gz database-2019-09-22_0300.16.tar.gz database-2019-09-23_0300.17.tar.gz database-2019-09-24_0300.18.tar.gz

查看数据

[root@centos7-18 test2]# ls

database-2019-04-01_0300.tar.gz database-2019-06-15_0300.tar.gz database-2019-09-01_0300.tar.gz database-2019-09-21_0300.15.tar.gz

database-2019-04-15_0300.tar.gz database-2019-07-01_0300.tar.gz database-2019-09-15_0300.9.tar.gz database-2019-09-22_0300.16.tar.gz

database-2019-05-01_0300.tar.gz database-2019-07-15_0300.tar.gz database-2019-09-18_0300.12.tar.gz database-2019-09-23_0300.17.tar.gz

database-2019-05-15_0300.tar.gz database-2019-08-01_0300.tar.gz database-2019-09-19_0300.13.tar.gz database-2019-09-24_0300.18.tar.gz

database-2019-06-01_0300.tar.gz database-2019-08-15_0300.tar.gz database-2019-09-20_0300.14.tar.gz·

以. 为分隔,按照第二列进行排序,采用字典序排序

[root@centos7-18 test2]# ls |sort -t. -k2

database-2019-09-18_0300.12.tar.gz

database-2019-09-19_0300.13.tar.gz

database-2019-09-20_0300.14.tar.gz

database-2019-09-21_0300.15.tar.gz

database-2019-09-22_0300.16.tar.gz

database-2019-09-23_0300.17.tar.gz

database-2019-09-24_0300.18.tar.gz

database-2019-09-15_0300.9.tar.gz

database-2019-04-01_0300.tar.gz

database-2019-04-15_0300.tar.gz

database-2019-05-01_0300.tar.gz

database-2019-05-15_0300.tar.gz

database-2019-06-01_0300.tar.gz

database-2019-06-15_0300.tar.gz

database-2019-07-01_0300.tar.gz

database-2019-07-15_0300.tar.gz

database-2019-08-01_0300.tar.gz

database-2019-08-15_0300.tar.gz

database-2019-09-01_0300.tar.gz

可以看到,先分隔,再指定某列进行按照字典序排序,此时字母比数字大,现象是正常的

以. 为分隔,按照第二列进行排序,并且采用数值排序

[root@centos7-18 test2]# ls |sort -t. -k2n

database-2019-04-01_0300.tar.gz

database-2019-04-15_0300.tar.gz

database-2019-05-01_0300.tar.gz

database-2019-05-15_0300.tar.gz

database-2019-06-01_0300.tar.gz

database-2019-06-15_0300.tar.gz

database-2019-07-01_0300.tar.gz

database-2019-07-15_0300.tar.gz

database-2019-08-01_0300.tar.gz

database-2019-08-15_0300.tar.gz

database-2019-09-01_0300.tar.gz

database-2019-09-15_0300.9.tar.gz

database-2019-09-18_0300.12.tar.gz

database-2019-09-19_0300.13.tar.gz

database-2019-09-20_0300.14.tar.gz

database-2019-09-21_0300.15.tar.gz

database-2019-09-22_0300.16.tar.gz

database-2019-09-23_0300.17.tar.gz

database-2019-09-24_0300.18.tar.gz

可以看到,此时使用的是按照第二列的数值进行排序(第一列默认使用字典序排序),现象是正常的

以. 为分隔,按照第二列进行排序,并且采用数值排序,同时逆序

[root@centos7-18 test2]# ls |sort -t. -k2nr

database-2019-09-24_0300.18.tar.gz

database-2019-09-23_0300.17.tar.gz

database-2019-09-22_0300.16.tar.gz

database-2019-09-21_0300.15.tar.gz

database-2019-09-20_0300.14.tar.gz

database-2019-09-19_0300.13.tar.gz

database-2019-09-18_0300.12.tar.gz

database-2019-09-15_0300.9.tar.gz

database-2019-04-01_0300.tar.gz

database-2019-04-15_0300.tar.gz

database-2019-05-01_0300.tar.gz

database-2019-05-15_0300.tar.gz

database-2019-06-01_0300.tar.gz

database-2019-06-15_0300.tar.gz

database-2019-07-01_0300.tar.gz

database-2019-07-15_0300.tar.gz

database-2019-08-01_0300.tar.gz

database-2019-08-15_0300.tar.gz

database-2019-09-01_0300.tar.gz

可以看到,后面如下文件,并没有逆序排列

database-2019-04-01_0300.tar.gz

database-2019-04-15_0300.tar.gz

database-2019-05-01_0300.tar.gz

database-2019-05-15_0300.tar.gz

database-2019-06-01_0300.tar.gz

database-2019-06-15_0300.tar.gz

database-2019-07-01_0300.tar.gz

database-2019-07-15_0300.tar.gz

database-2019-08-01_0300.tar.gz

database-2019-08-15_0300.tar.gz

database-2019-09-01_0300.tar.gz

如果想实现,后面那些文件也逆序排列,可以使用如下代码

[root@centos7-18 test2]# ls |sort -t. -k2n |sort -r

database-2019-09-24_0300.18.tar.gz

database-2019-09-23_0300.17.tar.gz

database-2019-09-22_0300.16.tar.gz

database-2019-09-21_0300.15.tar.gz

database-2019-09-20_0300.14.tar.gz

database-2019-09-19_0300.13.tar.gz

database-2019-09-18_0300.12.tar.gz

database-2019-09-15_0300.9.tar.gz

database-2019-09-01_0300.tar.gz

database-2019-08-15_0300.tar.gz

database-2019-08-01_0300.tar.gz

database-2019-07-15_0300.tar.gz

database-2019-07-01_0300.tar.gz

database-2019-06-15_0300.tar.gz

database-2019-06-01_0300.tar.gz

database-2019-05-15_0300.tar.gz

database-2019-05-01_0300.tar.gz

database-2019-04-15_0300.tar.gz

database-2019-04-01_0300.tar.gz

抽象成简单例子

构造数据

[root@centos7-18 test5]# ls

d1.tar.gz d2.tar.gz d3.tar.gz

测试

[root@centos7-18 test5]# ls |sort -t. -k2

d1.tar.gz

d2.tar.gz

d3.tar.gz

[root@centos7-18 test5]#

[root@centos7-18 test5]# ls |sort -t. -k2n

d1.tar.gz

d2.tar.gz

d3.tar.gz

[root@centos7-18 test5]# ls |sort -t. -k2nr

d1.tar.gz

d2.tar.gz

d3.tar.gz

可以看到,当参数与-k2写在一起的时候,该参数只针对第2列有效,对第一列的排序不起作用

如果想对整个字符串起作用,需要将参数单独写出来,如下

[root@centos7-18 test5]# ls |sort -t. -k2 -n

d1.tar.gz

d2.tar.gz

d3.tar.gz

[root@centos7-18 test5]# ls |sort -t. -k2 -n -r

d3.tar.gz

d2.tar.gz

d1.tar.gz



推荐阅读
  • Linuxchmod目录权限命令图文详解在Linux文件系统模型中,每个文件都有一组9个权限位用来控制谁能够读写和执行该文件的内容。对于目录来说,执行位的作用是控制能否进入或者通过 ... [详细]
  • 本文介绍了使用CentOS7.0 U盘刻录工具进行安装的详细步骤,包括使用USBWriter工具刻录ISO文件到USB驱动器、格式化USB磁盘、设置启动顺序等。通过本文的指导,用户可以轻松地使用U盘安装CentOS7.0操作系统。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了在Linux系统中设置文件ACL权限的方法和使用说明,包括在centos7.3和centos6.9中开启ACL权限的两种方法:在挂载时指定打开ACL权限和修改默认的属性信息。同时提供了对ACL权限的详细解释和应用场景。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • Linux下安装依赖包版本高解决方法
    本文介绍了在Linux系统下,当已安装的依赖包版本高于需要安装的依赖包版本时,解决方法包括欺骗安装程序和修改相关配置文件等操作。针对不同情况,提供了不同的解决方案。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
author-avatar
寻找冄己靉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有