1、sort工具
2、cut工具
3、uniq工具
4、tr工具
1.1、sort工具概述:
依据不同的数据类型进行排序
●字符排序
●数字排序
1.2语法格式
sort [选项] 参数
sort常用选项数字油
-f:忽略大小写
-b:忽略每行前面的空格
-M:按照月份进行排序
-n:按照数字进行排序
-r:反向排序
-u:等同于uniq,表示相同的数据仅显示一行(uniq只对连续行去重)
-t:指定分隔符,默认使用[Tab]键分隔
-o <输出文件>:将排序后的结果转存至指定文件
-k:指定排序区域
-nr:数字反向排序
示例按照第三列数字由小到大排序(-n -k)
[root@localhost ~]# cat /etc/passwd | sort -n -t: -k3
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
示例相同的数据只显示一行(-u)
[root@localhost ~]# cat fruit.bash | sort -u 不论几个apple banana都只会显示一个
apple
banana
orange
pear
示例数字反向排序(-nr)
[root@localhost ~]# cat fruit.bash | sort -nr
7banana
6pear
5apple
4orange
3apple
2banana
示例-k:指定排序区域
[root@localhost ~]# cat fruit.bash | sort -k2 让第二列apple等按字母排序
5 apple
3 apple
2 banana
7 banana
4 orange
6 pear
示例-t:指定分隔符,默认使用[Tab]键分隔
[root@localhost ~]# cat fruit.bash | sort -t: -k2 -n 使用冒号后面的1.5等等数字排序
2 banana:1.5
5 apple:2.2
3 apple:3.3
4 orange:4
6 pear:5
7 banana:9.1
2.1 cut:列截取工具
选项:
-b:按字节截取
-c:按字符截取,常用于中文
-d:指定以什么为分隔符截取,默认为制表符
-f:通常和-d一起
示例-b:按字节截,对中文无效
[root@localhost ~]# cat fruit | cut -b 2 过滤出每一行第二个字符
p
p
a
a
r
e
r
示例-c:按字符截取,常用于中文
[root@localhost ~]# cat fruit | cut -c 2
p
p
a
a
r
e
r
好
示例-d:指定以什么为分隔符截取,默认为制表符
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@localhost ~]# cat /etc/passwd | cut -d: -f3 以冒号为分隔符对第三列单独截取
0
1
2
3
4
[root@localhost ~]# cat /etc/passwd | cut -d: -f1,3 以冒号为分隔符对第一列和第三列单独截取
[root@localhost ~]# cat /etc/passwd | cut -d: -f1-3 以冒号为分隔符对第一列到第三列单独截取
3.1uniq工具
(1)用法:用于报告或者忽略文件中的重复行一般与sort命令结合使用
(2)语法格式
uniq [选项] 参数
(3)常用选项
-c:进行计数
-d:仅显示重复行
-u:仅显示出现一次的行
示例-c:进行计数
[root@localhost ~]# cat fruit | uniq -c 计数出现次数只对于连续的行orange不是连续编写所以分开统计
2 apple
2 banana
1 orange
1 pear
1 orange
1
示例-c:进行计数
[root@localhost ~]# cat fruit | sort | uniq -c 不连续的行也一次统计要加sort
1
2 apple
2 banana
2 orange
1 pear
示例显示文件中重复出现的行 -d
[root@localhost ~]# cat fruit | sort | uniq -d
apple
banana
orange
示例 -u:仅显示出现一次的行
[root@localhost ~]# cat fruit | sort | uniq -u
pear
示例查找筛选用户
[root@localhost ~]# who 当前三个用户
root pts/0 2021-06-14 07:07 (192.168.153.1)
root pts/1 2021-06-14 07:43 (192.168.153.1)
root pts/2 2021-06-14 07:43 (192.168.153.1)
[root@localhost ~]# who | sort | uniq -c 计数
1 root pts/0 2021-06-14 07:07 (192.168.153.1)
1 root pts/1 2021-06-14 07:43 (192.168.153.1)
1 root pts/2 2021-06-14 07:43 (192.168.153.1)
[root@localhost ~]# who | awk '{print $1}'| uniq -d 看第一列重复出现过的
root
[root@localhost ~]# who | awk '{print $5}'| uniq -d 看第五列重复出现过的
(192.168.153.1)
4.1 tr工具概述
(1)tr定义:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符,也可以用它来除去重复字符
(2)语法格式:
用法:tr[选项]… SET1 [SET2]
从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
(3)常用选项:
-c:取代所有不属于第一字符集的字符
-d:删除所有属于第一字符集的字符
-s:把连续重复的字符以单独一个字符表示(去重挤压)
-t:先删除第一字符集较第二字符集多出的字符
示例更换字母大小写
[root@localhost ~]# cat fruit | tr 'a' 'A' 所有a换成A
Apple
Apple
bAnAnA
bAnAnA
orAnge
peAr
orAnge
[root@localhost ~]# cat fruit | tr 'a-z' 'A-Z'
APPLE
APPLE
BANANA
BANANA
ORANGE
PEAR
ORANGE
[root@localhost ~]# cat fruit | tr 'apple' 'APPLE' 对字符生效不对单词生效
APPLE
APPLE
bAnAnA
bAnAnA
orAngE
PEAr
orAngE
示例-s:把连续重复的字符以单独一个字符表示
[root@localhost ~]# cat fruit | tr -s 'p' 连续的多个字符p只会出现一次
aple
aple
banana
banana
orange
pear
orange
示例删除字符-d
[root@localhost ~]# cat fruit | tr -d 'a' 删除字符a
pple
pple
bnn
bnn
ornge
per
ornge
[root@localhost ~]# cat fruit | tr -d '\n' 删除回车
appleapplebananabananaorangepearorange[root@localhost ~]#
示例把某个文件中的'换成字符
[root@localhost ~]# cat fruit | tr "'" '/'
本文介绍Linux下常用的文本处理工具,包括sort、cut、uniq及tr的使用方法与示例。这些工具能帮助用户高效地对文件进行排序、截取、去重及字符转换等操作。
699

被折叠的 条评论
为什么被折叠?



