sort命令介绍:

sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始!

1 sort的工作原理

sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

[rocrocket@rocrocket programming]$ cat seq.txt
banana
apple
pear
orange
[rocrocket@rocrocket programming]$ sort seq.txt
apple
banana
orange
pear

2 sort的-u选项

它的作用很简单,就是在输出行中去除重复行。

[rocrocket@rocrocket programming]$ cat seq.txt
banana
apple
pear
orange
pear
[rocrocket@rocrocket programming]$ sort seq.txt
apple
banana
orange
pear
pear
[rocrocket@rocrocket programming]$ sort -u seq.txt
apple
banana
orange
pear

pear由于重复被-u选项无情的删除了。

3 sort的-r选项

sort默认的排序方式是升序,如果想改成降序,就加个-r就搞定了。

[rocrocket@rocrocket programming]$ cat number.txt
1
3
5
2
4
[rocrocket@rocrocket programming]$ sort number.txt
1
2
3
4
5
[rocrocket@rocrocket programming]$ sort -r number.txt
5
4
3
2
1

4 sort的-o选项

由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。

但是,如果你想把排序结果输出到原文件中,用重定向可就不行了。

[rocrocket@rocrocket programming]$ sort -r number.txt > number.txt -----no!no!no!
[rocrocket@rocrocket programming]$ cat number.txt
[rocrocket@rocrocket programming]$
看,竟然将number清空了。

就在这个时候,-o选项出现了,它成功的解决了这个问题,让你放心的将结果写入原文件。这或许也是-o比重定向的唯一优势所在。

[rocrocket@rocrocket programming]$ cat number.txt
1
3
5
2
4
[rocrocket@rocrocket programming]$ sort -r number.txt -o number.txt
[rocrocket@rocrocket programming]$ cat number.txt
5
4
3
2
1

5 sort的-n选项

你有没有遇到过10比2小的情况。我反正遇到过。出现这种情况是由于排序程序将这些数字按字符来排序了,排序程序会先比较1和2,显然1小,所以就将10放在2前面喽。这也是sort的一贯作风。

我们如果想改变这种现状,就要使用-n选项,来告诉sort,“要以数值来排序”!

[rocrocket@rocrocket programming]$ cat number.txt
1
10
19
11
2
5
[rocrocket@rocrocket programming]$ sort number.txt (默认是升序)
1
10
11
19
2    (纳尼???2竟然比10大,哈哈,,,因为只比较的是第一位)
5
[rocrocket@rocrocket programming]$ sort -n number.txt
1
2
5
10
11
19

6 sort的-t选项和-k选项

如果有一个文件的内容是这样:

[rocrocket@rocrocket programming]$ cat facebook.txt
banana:30:5.5
apple:10:2.5
pear:90:2.3
orange:20:3.4

这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。

那么我想以水果数量来排序,也就是以第二列来排序,如何利用sort实现?

幸好,sort提供了-t选项,后面可以设定间隔符。(是不是想起了cut和paste的-d选项,共鸣~~)

指定了间隔符之后,就可以用-k来指定列数了。

[rocrocket@rocrocket programming]$ sort -n -k 2 -t : facebook.txt
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3

我们使用冒号作为间隔符,并针对第二列来进行数值升序排序,结果很令人满意。

7 其他的sort常用选项

-f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写

-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1

-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1

-M会以月份来排序,比如JAN小于FEB等等

-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。

转载于:https://blog.51cto.com/tenderrain/1651535

sort cut 命令的常用用法相关推荐

  1. cut命令的详细用法

    名称:cut 使用权限:所有使用者 用法:cut -cnum1-num2 filename 说明:显示每行从开头算起 num1 到 num2 的文字. 范例: shell>;>; cat  ...

  2. RHEL7/CentOS7 ip 命令常用用法,代替 ifconfg/route/ifup/ifdown

    注:从 RHEL7/CentOS7 开始,net-tools 包从系统中移除,ifconfg/route/ifup/ifdown 等命令均消失,转而以 ip 命令代替上述命令.因此本篇主要列举了如何使 ...

  3. shell特殊符号cut命令,sort、wc、uniq命令,tee、tr、split命令

    shell特殊符号cut命令 特殊符号 "*" 通配符,代表零个或多个字符 "?" 代表一个字符 "#" 注释字符 "\" ...

  4. linux下的zz命令,linux中cut命令的用法

    本文主要记录一下Linux中cut命令的用法. 1. cut命令使用说明 Usage: cut OPTION... [FILE]... cut命令用于选出FILE文件中每一行的某些部分,然后打印到标准 ...

  5. 【githubshare】Linux sed 命令行常用汇总:useful-sed,收集了 sed 命令行的诸多常见用法,可用于快速处理文本文件

    Linux sed 命令行常用汇总:useful-sed,收集了 sed 命令行的诸多常见用法,可用于快速处理文本文件. 仓库内提供了不少示例,如输出文件首行内容,正则匹配替换文本内容.删除空文件.删 ...

  6. linux目录搜索ip的命令,Linux常用命令全集 详细用法

    内容较长,建议先看目录 目录 Linux常用命令全集 详细用法 基础 相关介绍 控制台切换 快捷键 查看帮助 查看系统相关信息 查看ip地址 关机重启 目录与文件 相关介绍 查看文件 cat命令 le ...

  7. Nmap的常用命令和高级用法

    一.Nmap常用命令如下,是一位大佬总结,并且进行了标注,非常好. 1. nmap -sT 192.168.96.4  //TCP连接扫描,不安全,慢 2. nmap -sS 192.168.96.4 ...

  8. 日更第11天:Linux常用命令之chmod用法

    大家好,我是胖邰.今天是挑战的第11天,真没想到自己能坚持过半,先表扬一下自己.这次文章主要介绍使用chmod的用法.来吧,让我们一起了解下. 1. 命令简介 chmod 命令是用来修改某个文件或文件 ...

  9. 日更第13天:Linux常用命令之cat用法

    1. 命令简介 cat 命令官方的解释是用来连接所有指定文件并将结果写到标准输出.简单理解它最基本的功能是可以查看文件的内容.除此之外,我们还可以利用cat来创建文件或者把几个文件内容进行合并输出.功 ...

最新文章

  1. 专家访谈:为什么我们需要Erlang
  2. Oracle数据库在进程中是,由浅入深讲解Oracle数据库进程的相关概念
  3. matlab调用哈希表,ros与matlab联动使用
  4. centos7 qt之程序编译 cant start process “cmake”
  5. 现代软件工程 作业 结对编程 模板
  6. Centos 7 GCC 7.3编译器安装方法及C++17标准测试示例
  7. html小游戏代码_研发实践:Mozilla分享如何开发一款WebVR小游戏
  8. axios get 跨域_axios网络交互应用-Vue
  9. 湖仓一体是否会掀起金融业的下一波数字浪潮?
  10. linux进程属性,linux进程属性
  11. html跑马灯代码大全(图片文字移动代码)
  12. TextWatcher实现输入关键字筛选数据
  13. 百度、谷歌搜索引擎接口
  14. 三个“清洁代码”技巧将使您的开发团队效率提高 50%
  15. c语言的typedef struct 对应java参数类型,JNA实战系列:02JNA与C语言中的数据类型映射以及复杂结构体传参示例...
  16. 装修细节注意问题 装修细节有哪些
  17. 电信光纤无线路由器(光猫)的设置方法
  18. MATLAB实现模拟推导π的值
  19. Oracle 官网下载地址
  20. c语言中pair的头文件,C++中使用pair是否一定要包含头文件utility

热门文章

  1. MATLAB【十四】————调用深度库生成exe,批量运行三层文件夹下图片,保存结果
  2. Git学习记录(一)
  3. String.Format格式说明
  4. datagrid分页问题(前后跳页)《控件版》
  5. ASP.NET实现数据图表
  6. windows7 64位机上配置MinGW+Codeblocks+ wxWidgets
  7. win mysql修改端口号_Windows10系统下查看mysql的端口号并修改的教程图解
  8. php中连接两个值,php - 如何从两个表的连接中选择一个值? - SO中文参考 - www.soinside.com...
  9. matlab一元线性回归分析_建模开讲:一元线性回归分析及SPSS软件实现
  10. android调用相册和摄像头,调用Android摄像头与打开相册