当前位置: 首页 > news >正文

cut、tr、sort 和 uniq 生产典型示例

1. cut 命令详解

功能
  • 提取文本的指定字段(列)或字符范围
  • 适合处理 分隔符分隔的文本(如 CSV、TSV)或 固定宽度文本
语法
cut [选项] 文件
常用参数
参数说明
-d 分隔符指定字段分隔符(默认是制表符 \t
-f N提取第 N 个字段(支持逗号分隔的多个字段,如 -f1,3
-c N-M提取第 N 到第 M 个字符(支持范围如 1-10
-b N-M类似 -c,但按字节提取(不推荐,因字符编码问题)
示例
  1. 提取 CSV 文件的第2列和第4列

    cut -d ',' -f2,4 data.csv
    • 输入id,name,age,city
    • 输出name,city
  2. 提取固定宽度文本的前10个字符

    cut -c1-10 fixed_width.txt
    • 输入abcdefghijklmnopqrstuv
    • 输出abcdefghij
  3. 从日志中提取 IP 地址

    cut -d ' ' -f1 access.log
    • 输入192.168.1.1 - - [15/Aug/2025:17:16:28 +0000] "GET / HTTP/1.1"
    • 输出192.168.1.1
常见问题
  • 为什么 cut 比 awk 快?
    cut 是单行处理工具,直接按字段或字符提取,无需解析正则表达式,适合简单任务。
  • 如何处理多级分隔符?
    若字段分隔符是空格和逗号混合,可先用 tr 替换为统一分隔符:
    tr ' ' ',' < input.txt | cut -d ',' -f1,3

2. tr 命令详解

功能
  • 字符级别的转换、删除或压缩
  • 适合处理字符替换、清理冗余字符。
语法
tr [选项] [字符集1] [字符集2]
常用参数
参数说明
s压缩连续重复字符(如多个空格变一个)
d删除指定字符
c反转字符集(保留不在字符集中的字符)
示例
  1. 小写转大写

    tr 'a-z' 'A-Z' < input.txt
    • 输入hello world
    • 输出HELLO WORLD
  2. 删除数字

    tr -d '0-9' < input.txt
    • 输入abc123def456
    • 输出abcdef
  3. 压缩连续空格

    tr -s ' ' < input.txt
    • 输入This is a test
    • 输出This is a test
常见问题
  • 为什么 tr 比 sed 快?
    tr 是字符级操作,直接映射字符,而 sed 需要逐行匹配正则表达式。
  • 如何删除所有空格?
    tr -d ' ' < input.txt

3. sort 命令详解

功能
  • 对文本行进行排序,支持按列、数字、稳定性排序。
语法
sort [选项] 文件
常用参数
参数说明
-t 分隔符指定字段分隔符(默认是空格或制表符)
-k N按第 N 列排序(支持范围如 -k1,1
-n按数字排序
-r逆序排序
-s稳定排序(保留原始顺序)
-m合并已排序的文件
示例
  1. 按姓名和年龄排序用户列表

    sort -t ',' -k1,1 -k2,2n users.csv
    • 输入Alice,30,Bob,25
    • 输出Alice,30,Bob,25(按姓名升序,年龄降序)
  2. 合并两个已排序文件

    sort -m file1.txt file2.txt > merged.txt
    • 前提file1.txt 和 file2.txt 已按相同规则排序。
  3. 统计 IP 访问量前10

    cut -d ' ' -f1 access.log | sort | uniq -c | sort -nr | head -n 10
常见问题
  • 如何稳定排序?
    使用 -s 参数确保相同键值的行保持原顺序。
  • 如何按数字排序?
    使用 -n 参数,例如:
    sort -n numbers.txt

4. uniq 命令详解

功能
  • 去除相邻的重复行,常与 sort 配合使用。
语法
uniq [选项] 文件
常用参数
参数说明
-c统计重复次数
-d仅显示重复的行
-u仅显示唯一的行
示例
  1. 统计 IP 访问量

    cut -d ' ' -f1 access.log | sort | uniq -c
    • 输出10 192.168.1.1(IP 出现10次)
  2. 去除重复行

    sort data.txt | uniq
  3. 找出重复的错误日志

    sort error.log | uniq -d
常见问题
  • 为什么 uniq 需要先排序?
    uniq 只能去除 相邻 的重复行,因此必须先用 sort 排序。
  • 如何统计唯一行?
    使用 -u 参数:
    sort data.txt | uniq -u

总结对比

命令核心功能不可替代性典型场景
cut字段/字符提取简单高效,适合大文件提取日志字段、CSV列
tr字符转换/删除/压缩轻量级字符操作清理空格、大小写转换
sort排序/合并内置高效排序算法统计IP访问量、合并文件
uniq去重/统计依赖排序的去重工具日志去重、统计重复行

实际生产场景示例

1. 日志分析:统计访问量前10的 IP
cut -d ' ' -f1 access.log | sort | uniq -c | sort -nr | head -n 10
  • 流程
    1. cut 提取 IP 列;
    2. sort 排序;
    3. uniq -c 统计重复次数;
    4. sort -nr 按访问量倒序排序;
    5. head 取前10条。
2. 数据清洗:清理 CSV 文件
tr -s ' ' < data.csv | cut -d ',' -f1,3,5
  • 流程
    1. tr 压缩空格;
    2. cut 提取关键列。
3. 性能监控:提取进程内存使用率
ps aux | sort -k4 -nr | head -n 5
  • 流程
    1. ps 获取进程信息;
    2. sort 按内存使用率倒序排序;
    3. head 取前5个进程。

常见错误与解决方法

  1. cut 提取字段时无输出

    • 原因:字段分隔符未正确指定(如默认是制表符)。
    • 解决:使用 -d 指定分隔符,例如:
      cut -d ',' -f2 data.csv
  2. tr 无法删除字符

    • 原因:未正确使用 -d 参数。
    • 解决:明确指定删除字符:
      tr -d ' ' < input.txt
  3. sort 排序结果不正确

    • 原因:未按数字排序(默认按字符串排序)。
    • 解决:使用 -n 参数:
      sort -n numbers.txt
  4. uniq 无法去重

    • 原因:未先排序。
    • 解决:先用 sort 排序:
      sort data.txt | uniq
http://www.lryc.cn/news/622131.html

相关文章:

  • 微服务的编程测评系统11-jmeter-redis-竞赛列表
  • Nginx反向代理与缓存实现
  • 【论文解读】DDRNet:深度双分辨率网络在实时语义分割中的结构与原理全面剖析
  • 51单片机-驱动蜂鸣器模块教程
  • 开源数据发现平台:Amundsen Frontend Service 安装 开发者指南
  • debian13 安装过程 root配置
  • 从 LLM 到自主 Agent:OpenCSG 打造开源 AgenticOps 生态
  • Linux网络基础概念
  • 【RTOS】RT-Thread 进程间通信IPC源码级分析详解
  • [Pyro] 基础构件 | 随机性sample | 可学习参数param | 批量处理plate
  • 【3D图像技术分析及实现】3DGS与深度学习网络结合以实现跨场景迁移的研究调研
  • 电力系统之常见基础概念
  • 【秋招笔试】2025.08.15饿了么秋招机考-第二题
  • [激光原理与应用-285]:理论 - 波动光学 - 无线电磁波的频谱分配
  • [激光原理与应用-287]:理论 - 波动光学 - 电磁波既能承载能量,又能承载信息?
  • 力扣(接雨水)——单调栈
  • 在 Linux 服务器搭建Coturn即ICE/TURN/STUN实现P2P(点对点)直连
  • Vim 常用快捷键及插件
  • 力扣top100(day04-05)--堆
  • [Linux]双网卡 CentOS 系统中指定网络请求走特定网卡的配置方法
  • 微服务容错与监控体系设计
  • 基于Selenium的web自动化框架
  • 另类pdb恢复方式-2
  • 机器学习中的PCA降维
  • 【GPT入门】第47课 大模型量化中 float32/float16/uint8/int4 的区别解析:从位数到应用场景
  • ifcfg-ens33 配置 BOOTPROTO 单网卡实现静态和dhcp 双IP
  • break的使用大全
  • 102、【OS】【Nuttx】【周边】文档构建渲染:安装 Esbonio 服务器
  • 医学名刊分析评介:医学前沿
  • CERT/CC警告:新型HTTP/2漏洞“MadeYouReset“恐致全球服务器遭DDoS攻击瘫痪