前言
🔪 一、cut —— 按列或字符截取
常用选项:
示例:
🔄 二、sort —— 排序(默认按行首字符升序)
常用选项:
示例:
🧼 三、uniq —— 去除连续重复行
常用选项:
示例:
实战:查看登录用户
🔁 四、tr —— 字符替换、删除与压缩
常用选项:
示例:
🧩 五、实战组合应用
① 统计当前连接的主机数
② 统计当前主机的连接状态
🧠 六、总结
前言
在日常的 Linux 系统管理和数据处理中,我们经常需要对文本进行提取、排序、去重和替换等操作。cut
、sort
、uniq
和 tr
正是四个非常实用的命令行工具,熟练掌握它们可以极大提升文本处理的效率。本文将详细介绍这几个命令的用法,并通过实例演示如何灵活运用。
🔪 一、cut —— 按列或字符截取
cut
命令常用于从文本中提取指定字段,支持按字节、字符或字段进行截取。
常用选项:
-
-b
:按字节截取 -
-c
:按字符截取(推荐用于中文) -
-d
:指定分隔符(默认为 TAB) -
-f
:指定要提取的字段(需与-d
搭配使用)
示例:
bash
# 提取 /etc/passwd 中的用户名(第1列) cut -d':' -f1 /etc/passwd# 提取 UID(第3列) cut -d':' -f3 /etc/passwd# 同时提取用户名和 UID cut -d':' -f1,3 /etc/passwd# 提取每行的第2个字符 cut -c 2 name.txt# 处理中文字符(推荐使用 -c) cat name.txt | cut -c 2
⚠️ 注意:
cut
最适合处理以单个字符作为分隔符的文本。
🔄 二、sort —— 排序(默认按行首字符升序)
sort
用于对文本行进行排序,支持按数值、字典序、指定字段等多种方式排序。
常用选项:
-
-t
:指定分隔符 -
-k
:指定排序字段 -
-n
:按数值排序(默认是字典序) -
-r
:降序排列 -
-u
:去重(等同于uniq
) -
-o
:将结果输出到文件
示例:
bash
# 按第一列升序排序 sort passwd.txt# 按第3列数值升序(冒号分隔) sort -n -t: -k3 passwd.txt# 按第3列数值降序 sort -nr -t: -k3 passwd.txt# 去重并保存结果 sort -u passwd.txt -o sorted.txt
🧼 三、uniq —— 去除连续重复行
uniq
用于去除相邻的重复行,通常需要先使用 sort
排序以确保全局去重。
常用选项:
-
-c
:统计每行重复次数 -
-d
:仅显示重复的行 -
-u
:仅显示不重复的行
示例:
bash
# 创建示例文件 cat fruit.txt apple apple peache pear banana cherry cherry banana orange# 去除相邻重复行 uniq fruit.txt# 全局去重 sort fruit.txt | uniq# 统计每行出现次数 sort fruit.txt | uniq -c# 只显示重复的行 sort fruit.txt | uniq -d# 只显示不重复的行 sort fruit.txt | uniq -u
实战:查看登录用户
bash
# 查看当前登录用户 who | awk '{print $1}' | uniq# 查看所有登录过系统的用户 last | awk '{print $1}' | sort | uniq | grep -v "^$" | grep -v wtmp
🔁 四、tr —— 字符替换、删除与压缩
tr
主要用于单个字符的替换、删除或压缩重复字符,不支持字段级操作。
常用选项:
-
-d
:删除指定字符 -
-s
:压缩连续重复字符(只保留一个)
示例:
bash
# 小写转大写 cat fruit.txt | tr 'a-z' 'A-Z'# 替换字符(一一对应) cat fruit.txt | tr 'apple' 'APPLE'# 替换 a 为斜杠 tr 'a' '/' < fruit.txt# 删除所有 a tr -d 'a' < fruit.txt# 删除换行符 tr -d '\n' < fruit.txt# 压缩连续 p 为一个 tr -s 'p' < fruit.txt
🧩 五、实战组合应用
① 统计当前连接的主机数
bash
ss -nt | tr -s " " | cut -d " " -f5 | cut -d ":" -f1 | sort | uniq -c
-
ss -nt
:查看 TCP 连接(不解析服务名) -
tr -s " "
:压缩多余空格 -
cut -d " " -f5
:提取第5列(IP:端口) -
cut -d ":" -f1
:提取 IP 地址 -
sort | uniq -c
:排序并统计每个 IP 的出现次数
② 统计当前主机的连接状态
bash
ss -nta | grep -v '^State' | cut -d" " -f1 | sort | uniq -c
🧠 六、总结
-
cut —— 截列
-
sort —— 排序
-
uniq —— 去重(需先排序)
-
tr —— 替换 / 删除 / 压缩
熟练掌握这四个命令,你将能轻松应对日常工作中大多数的文本处理任务。建议多加练习,灵活组合使用,提升命令行操作效率。