1、排序命令sort

(1)sort命令介绍

sort命令可针对文本文件的内容,以行为单位来排序。

命令格式如下:

[root@localhost ~]# sort [选项] 文件名

选项:

  • -f:忽略大小写。
  • -b:忽略每行前面的空白部分。
  • -n:以数值型进行排序,sort命令默认使用字符串型排序。
  • -r:反向排序。
  • -u:删除重复行。就是uniq命令。
  • -t:指定分隔符,sort命令默认的分隔符是制表符。
  • -k [n,m]:按照指定的字段范围排序。从第n字段开始,m字段结束(默认到行尾)。

(2)练习

以下练习默认文本内容如下:

java    haha    3
python lala 77
shell dudu 23
hello world 12
linxu xixi 6

1)示例1

sort命令默认是用每行开头第一个字符来进行排序的。

执行sort排序命令:

# 默认按行首字符进行排序
[root@localhost tmp]# sort test.txt
hello world 12
java haha 3
linxu xixi 6
python lala 77
shell dudu 23

如果想要反向排序,请使用-r选项:

# 反向排序
[root@localhost tmp]# sort -r test.txt
shell dudu 23
python lala 77
linxu xixi 6
java haha 3
hello world 12

2)示例2

按照文档中,每行的指定字段进行排序。

需要使用-k选项:

# -k 2,2表示:指定按照第二个字段排序
# 2,2表示第2个字段开始,到第2个字段结束
[root@localhost tmp]# sort -k 2,2 test.txt
shell dudu 23
java haha 3
python lala 77
hello world 12
linxu xixi 6

注意:文本中字段之间的分隔是制表符,默认识别。

3)示例3

按照数字进行排序,根据文本中的内容,我们需要按照第三列进行排序。

[root@localhost tmp]# sort -k 3,3 test.txt
hello world 12
shell dudu 23
java haha 3
linxu xixi 6
python lala 77

我们发现按照第三列内容进行排序的结果,有点不正确,3和6怎么排在12的后边了。

是因为sort命令并没有把第三列的数据当作数字,默认是识别成字符串,所以是按照字符串的规则来排序的,也就是按第一位的数字进行排序的。

我们需要添加sort命令的-n选项,就可以解决上述问题了。也就是让sort命令把第三列按数值进行排序。

[root@localhost tmp]# sort -n -k 3,3 test.txt
java haha 3
linxu xixi 6
hello world 12
shell dudu 23
python lala 77

4)示例4

如果想要指定排序的字段,并且文本中字段间的分隔符不是制表符,这个时候就需要使用-t选项指定分隔符,并使用-k选项指定字段号。

如下面文本:

java:haha:3
python:lala:77
shell:dudu:23
hello:world:12
linxu:xixi:6

需求:按文本内容中的第三列数字进行排序。

[root@localhost tmp]# sort -t ":" -n -k 3,3 test.txt
java:haha:3
linxu:xixi:6
hello:world:12
shell:dudu:23
python:lala:77

2、取消重复行命令uniq

uniq命令是用来取消重复行的命令,其实和sort -u选项是一样的。

命令格式如下:

[root@localhost ~]# uniq [选项] 文件名

选项:
-i:忽略大小写。

练习:

student.txt文本内容如下:

ID      Name    Python  Linux   MySQL   Java
1 Tangs 88 87 86 85.55
2 Sunwk 99 98 97 96.66
2 Sunwk 99 98 97 96.66
3 Zhubj 77 76 75 74.44
3 Zhubj 77 76 75 74.44
4 Shahs 66 65 64 63.33
4 Shahs 66 65 64 63.33

我们可以看到student.txt文本的ID为2、3、4的信息有重复。

使用uniq命令删除重复的行后,有如下输出结果:

[root@localhost tmp]# uniq student.txt
ID Name Python Linux MySQL Java
1 Tangs 88 87 86 85.55
2 Sunwk 99 98 97 96.66
3 Zhubj 77 76 75 74.44
4 Shahs 66 65 64 63.33

更多参考可以查看:https://www.runoob.com/linux/linux-comm-uniq.html

3、统计命令wc

wc命令是统计文档中行数,字符数,字节数等信息。

命令格式如下:

[root@localhost ~]# wc [选项] 文件名
选项:
-l:只统计行数
-w:只统计单词数
-m:只统计字符数

练习1:

在默认的情况下,wc命令将计算指定文件的行数、字数,以及字节数。

# 行数为5、单词数30、字节数124
[root@localhost tmp]# wc student.txt
5 30 124 student.txt

练习2:

查看特定的统计信息,只看行数和字节数。

# 行数为5、字节数124
[root@localhost tmp]# wc -lm student.txt
5 124 student.txt

练习3:

同时查看多个文件的统计信息。

[root@localhost tmp]# wc student.txt test2.txt
5 30 124 student.txt
8 37 318 test2.txt
13 67 442 总用量

更多参看可以查看:https://www.runoob.com/linux/linux-comm-wc.html

『忘了再学』Shell基础 — 31、字符处理相关命令的更多相关文章

  1. 『忘了再学』Shell基础 — 19、使用declare命令声明变量类型

    目录 1.declare命令介绍 2.声明数组变量类型 3.声明变量为环境变量 4.声明只读属性 5.补充: 1.declare命令介绍 Shell中所有变量的默认类型是字符串类型,如果你需要进行特殊 ...

  2. 『忘了再学』Shell基础 — 10、Bash中的特殊符号(二)

    提示:本篇文章接上一篇文章,主要说说()小括号和{}大括号的区别与使用. 8.()小括号 ():用于一串命令执行时,()中的命令会在子Shell中运行.(和下面大括号一起说明) 9.{}大括号 {}: ...

  3. 『忘了再学』Shell基础 — 25、扩展正则表达式

    目录 1.扩展正则表达式说明 2.练习 (1)+和?练习 (2)|和()练习 3.注意(重点) 1.扩展正则表达式说明 熟悉正则表达式的童鞋应该很疑惑,在其他的语言中是没有扩展正则表达式说法的,在Sh ...

  4. 『忘了再学』Shell基础 — 2、Shell的作用与分类

    目录 1.Shell的作用 2.Shell的分类 1.Shell的作用 Shell除了能解释用户输入的命令,将它传递给内核,还可以: 调用其他程序,给其他程序传递数据或参数,并获取程序的处理结果. 在 ...

  5. 『忘了再学』Shell基础 — 5、Bash基本功能(命令的别名和常用快捷键)

    目录 1.给命令设置别名 (1)设置别名的命令格式 (2)命令别名永久生效 (3)别名的优先级 2.Bash常用快捷键 1.给命令设置别名 Linux系统的命令别名我们之前已经说过了,这里再过一边. ...

  6. 『忘了再学』Shell基础 — 3、echo命令的介绍与使用

    目录 1.echo命令的作用 2.echo命令的基本用法 3.echo命令的-e选项用法 4.echo命令一些特殊用法 (1)输出字符带有字体颜色 (2)输出字符带有背景颜色 在讲Shell脚本之前, ...

  7. 『忘了再学』Shell基础 — 24、Shell正则表达式的使用

    目录 1.正则表达式说明 2.基础正则表达式 3.练习 (1)准备工作 (2)*练习 (3).练习 (4)^和$练习 (5)[]练习 (6)[^]练习 (7)\{n\}练习 (8)\{n,\}练习 ( ...

  8. 『忘了再学』Shell基础 — 30、sed命令的使用

    目录 1.sed命令说明 2.行数据操作 (1)查看文件中的数据 (2)删除文件中的数据 (3)向文件中追加数据 (4)向文件中插入数据 (5)修改文件中的多行数据(删除,追加,插入) (6)替换文件 ...

  9. 『忘了再学』Shell基础 — 1、Shell的介绍

    目录 1.Shell的由来 2.Shell的两种执行指令方式 3.什么是Shell脚本 4.Shell 是一种脚本语言 1.Shell的由来 我们比较熟悉Windows系统的图形化界面,对于图形界面来 ...

随机推荐

  1. Conda 配置 Python 环境

    目录 前言 一.Conda 是什么 二.如何获取 三.使用 Conda 命令配置多环境 1.创建新环境 2.激活新环境 3.配置新环境 4.退出新环境 5.检查所有环境 6.检查所有安装的包 7.删除 ...

  2. phpshe xml注入

    *php商城系统 xml注入* **页面样式* *Xml原理参考:* https://www.cnblogs.com/20175211lyz/p/11413335.html *漏洞函数simplexm ...

  3. spring原始注解开发-01

    我们使用xml-Bean标签的配置方式和注解做对比理解 1.创建UserDao接口以及UserDao的实现类UserDaoImpl(接口代码省略) public class UserDaoImpl i ...

  4. 企业应用架构研究系列二十七:Vue3.0 之环境的搭建与Vue Antd Admin探索

    开发前端需要准备一些开发工具,这些工具怎么安装就不详细描写了,度娘一些很多很多.主要把核心的开发工具列表一些,这些资源也是非常容易找到和安装的. Node 安装:https://nodejs.org/ ...

  5. VirtualBox安装Kali

    VirtualBox安装Kali 下载VBox 去Virtual Box官网下载(根据操作系统选择版本,此处以Windows为例) 打开安装程序进行安装即可 安装Kali 去Kali Linux官网下 ...

  6. SwitchHosts管理编辑hosts工具

    管理Hosts工具 SwitchHosts 地址: SwitchHosts 开发工程中,针对不同项目设置不同的域名. 办法很多,例如直接编辑hosts文件,通过环境工具提供的功能设置等. 现在要安利一 ...

  7. Python学习进度汇报

    学习进度还是比较慢的,上周五(18号晚上安装了Pycharm)就开始学,五天只到这个位置,当前一直是2倍速看黑马的Python视频,外加查看菜鸟的文档,需要加快一些进度了,后续还有后续的目标要实现,争 ...

  8. vue3响应式模式设计原理

    vue3响应式模式设计原理 为什么要关系vue3的设计原理?了解vue3构建原理,将有助于开发者更快速上手Vue3:同时可以提高Vue调试技能,可以快速定位错误 1.vue3对比vue2 vue2的原 ...

  9. vue elementUI 之 this.$confirm 用法

      this.$confirm('您确定退出当前账号吗?', '提示', {                         confirmButtonText: '确定',             ...

  10. Hoo Smart Chain 万物生长计划火热报名中,可视化公链迸发勃勃生机

    在DeFi越来越趋向同质化和静态化时,Hoo Smart Chain决定充当破局者,宣布决定All In元宇宙,并于2022年3月份开启面向全球去中心化开发者的奖励计划--「万物生长计划」 目前Ter ...