Shell 脚本中常用命令——Sort、Uniq、Cut、Seq

一、Sort

用来给文件内容进行排序。

  • 语法:sort [选项] 文件名1 文件名2 ...
选项作用
-r反向排序(默认是升序,-r 就是降序)
-n按照数字进行排序(默认是根据字符进行排序)
-u去除重复的行(重复的行可以是不连续的)
  • 注意:sort 的排序方式是根据每行第一个字节来进行排序的。

1)以升序的方式输出

[root@localhost ~]# sort 1.txt

在这里插入图片描述
2)以倒序的方式输出

[root@localhost ~]# sort -r 1.txt

在这里插入图片描述
3)按照数字的方式输出

[root@localhost ~]# sort -n 1.txt

在这里插入图片描述
4)去除重复的行再输出

[root@localhost ~]# sort -u 1.txt

在这里插入图片描述

二、Uniq

主要就是用来去除文件中连续的重复行。

  • 语法:uniq [选项] 文件名1 文件名2 ...
选项作用
-c在行首用数字表示该行出现了多少次
-u仅仅显示那些没有出现重复过的行

1)统计每行出现的次数

[root@localhost ~]# uniq -c 1.txt

在这里插入图片描述
2)统计出没有出现出重复行的数量

[root@localhost ~]# uniq -u 1.txt

在这里插入图片描述

1.Sort 和 Uniq 结合使用

1)统计出 Listen (监听) 和 Estableshed (已连接) 出现的次数

[root@localhost ~]# netstat -ant | awk /^tcp/'{print $NF}' | sort | uniq -c

在这里插入图片描述
2)统计相同的网站出现的次数

[root@localhost ~]# vim test.txt
http://www.163.com
http://www.163.com
http://www.163.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.baidu.com
http://www.cnblogs.com
http://www.qq.com
http://www.163.com
http://www.baidu.com
http://www.baidu.com
http://www.qq.com
http://www.163.com
http://www.baidu.com
[root@localhost ~]# awk -F "[/]+" '{print $2}' test.txt | sort | uniq -c

在这里插入图片描述
也可以以下面这种方式来统计

[root@localhost ~]# awk -F "[/]+" '{A[$2]++}END{for (B in A){print B,A[B]}}' test.txt

在这里插入图片描述

三、Cut

cut 是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对 来进行分析的,并不是整篇信息分析的。

  • 语法:cut [选项] 文件名1 文件名2 ...
选项作用
-d指定分隔符(默认为制表符)
-f指定截取的列

输出第 7 字段
在这里插入图片描述

四、Seq

  • 用于生成一个数到另一个数之间的所有整数。

语法:

  • seq [选项] ... 尾数
  • seq [选项] 首数 ... 尾数
  • seq [选项] 首数 增量 尾数
选项作用
-f指定输出格式
-s指定分隔符,默认分隔符是 /n (回车)
-w指定输出数字同宽,与 -f 部分作用相似,不可与 -f 选项同时使用

1.输出连续整数

1)输出从 1 到 5 的整数

[root@localhost ~]# seq 5

在这里插入图片描述
2)输出从 1 到 10,间隔为 2 的所有整数

[root@localhost ~]# seq 1 2 10

在这里插入图片描述
3)输出从 0 到 10,间隔为 2 的所有整数

[root@localhost ~]# seq 0 2 10

在这里插入图片描述

2.指定输出格式

1)数字位数为三位,不足补空格

[root@localhost ~]# seq -f '%3g' 1 5

在这里插入图片描述
2)数字位数为三位,不足补 0

[root@localhost ~]# seq -f '%03g' 1 5

在这里插入图片描述
3)在 test 后面将数字位数为二位,不足补 0

[root@localhost ~]# seq -f 'test%02g' 1 5

在这里插入图片描述

3.指定分隔符

1)空格作为分隔符

[root@localhost ~]# seq -s ' ' 1 5

在这里插入图片描述
2)中划线作为分隔符

[root@localhost ~]# seq -s '-' 1 5

在这里插入图片描述

4.指定输出数字同宽

1)等宽输出 8 到 12 之间的连续整数

[root@localhost ~]# seq -w 8 12

在这里插入图片描述
2)等宽输出 99 到 101 之间的连续整数

[root@localhost ~]# seq -w 99 101

在这里插入图片描述

5.组合使用

等宽输出 99 到 101 之间的连续整数,并用空格分隔

[root@localhost ~]# seq -w -s ' ' 99 101

在这里插入图片描述

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿许浪尽天涯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值