命令行文本处理小工具:cut、sort、uniq、tr 详解与应用

发布于:2025-09-03 ⋅ 阅读:(21) ⋅ 点赞:(0)

前言

在日常的 Linux 系统管理和数据处理中,我们经常需要快速提取、排序、去重或替换文本内容。虽然强大的脚本语言(如 awk、sed)能处理复杂任务,但在很多简单场景中,几个小巧而高效的命令组合起来就足以胜任。cutsortuniqtr 正是这样一组经典的文本处理工具,它们被称为“命令行文本处理四剑客”。本文将系统介绍这四大工具的常见用法和典型组合,助你提升 shell 工作效率。


一、cut —— 精准提取所需字段

cut 命令主要用于按列或字符截取文本内容,特别适用于处理具有固定分隔符的结构化数据。

🔹 常用选项

  • -b:按字节截取
  • -c:按字符截取(推荐用于中文)
  • -d:指定分隔符(默认为 TAB)
  • -f:指定要提取的字段(需与 -d 搭配使用)

🔸 示例用法

cut -d':' -f1 /etc/passwd        # 提取用户名(第1列)
cut -d':' -f3 /etc/passwd        # 提取UID(第3列)
cut -c2 name.txt                 # 提取每行第2个字符
who | cut -b 3                   # 提取 who 输出每行的第3个字节

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

💡 注意:cut 最适合处理以单个字符作为分隔符的文本,例如 /etc/passwd、CSV 文件等。


二、sort —— 让文本有序排列

sort 用于对文本行进行排序,支持按字符串、数值、指定列等多种方式排序,并具备去重功能。

🔹 常用选项

  • -t:指定分隔符
  • -k:指定排序的列
  • -n:按数值大小排序(默认按字典序)
  • -r:降序排列
  • -u:去除重复行(相当于 sort | uniq
  • -o:将结果输出到文件

🔸 示例用法

sort passwd.txt                         # 按行首字符升序排列
sort -n -t: -k3 passwd.txt              # 按第3列(UID)数值升序
sort -nr -t: -k3 passwd.txt -o out.txt  # 按UID降序并保存结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


三、uniq —— 去除连续重复行

uniq 用于去除相邻的重复行,通常与 sort 命令结合使用以实现全局去重。

🔹 常用选项

  • -c:统计每行重复出现的次数
  • -d:仅显示重复的行
  • -u:仅显示不重复的行

🔸 示例用法

uniq fruit.txt                      # 去除相邻重复行
sort fruit.txt | uniq               # 全局去重
sort fruit.txt | uniq -c            # 统计各行出现次数
last | awk '{print $1}' | sort | uniq  # 查看所有登录过的用户

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、tr —— 字符转换与处理

tr(translate)主要用于字符替换、删除或压缩重复字符,处理对象是字符而非字段。

🔹 常用选项

  • -d:删除指定字符
  • -s:压缩连续重复的字符(只保留一个)

🔸 示例用法

tr 'a-z' 'A-Z' < fruit.tx # 将所有小写字母转为大写
tr -d 'a' < fruit.txt    # 删除所有字母 'a'
tr -s '\n' < demo       # 压缩连续换行符(多个换行为一个)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、实战组合:常见面试题解析

1. 统计当前主机的 TCP 连接数(按IP)

ss -nt | tr -s " " | cut -d " " -f5 | cut -d: -f1 | sort | uniq -c
  • ss -nt:列出所有 TCP 连接
  • tr -s " ":压缩多余空格
  • cut -d " " -f5:提取第五列(IP:端口)
  • cut -d: -f1:提取 IP 地址
  • sort | uniq -c:排序并统计每个 IP 的出现次数
    在这里插入图片描述

2. 查看系统登录用户(去重)

who | awk '{print $1}' | uniq

在这里插入图片描述

3. 查看所有曾登录系统的用户

last | awk '{print $1}' | sort | uniq | grep -vE "(^$|wtmp)"

在这里插入图片描述


六、总结口诀与使用场景

命令 核心功能 典型应用场景
cut 按列或字符截取 提取日志特定字段、解析结构化数据
sort 排序(支持多种规则) 排序数据、去重前预处理
uniq 去除相邻重复行 统计出现次数、提取唯一值
tr 字符替换、删除、压缩 大小写转换、删除特殊字符

记忆口诀
“cut 截列,sort 排序,uniq 去重(需配 sort),tr 换删压缩。”


结语

cutsortuniqtr 虽然功能简单,但通过灵活组合,它们能解决许多日常文本处理问题。熟练掌握这些命令,不仅能提高命令行操作效率,也是理解 Linux 哲学“组合小工具完成大任务”的经典实践。希望本文能帮助你更好地使用这些工具,如有疑问或补充,欢迎留言讨论。


相关标签#Linux命令 #文本处理 #Shell编程 #运维工具


网站公告

今日签到

点亮在社区的每一天
去签到