前言

🔪 一、cut —— 按列或字符截取

常用选项:

示例:

🔄 二、sort —— 排序(默认按行首字符升序)

常用选项:

示例:

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

常用选项:

示例:

实战:查看登录用户

🔁 四、tr —— 字符替换、删除与压缩

常用选项:

示例:

🧩 五、实战组合应用

① 统计当前连接的主机数

② 统计当前主机的连接状态

🧠 六、总结

前言

在日常的 Linux 系统管理和数据处理中,我们经常需要对文本进行提取、排序、去重和替换等操作。cutsortuniq 和 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 —— 替换 / 删除 / 压缩


熟练掌握这四个命令,你将能轻松应对日常工作中大多数的文本处理任务。建议多加练习,灵活组合使用,提升命令行操作效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/95515.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/95515.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/95515.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时序数据库选型指南:Apache IoTDB为何成为工业物联网首选?

引言&#xff1a;时序数据管理的时代挑战 随着工业4.0和物联网技术的快速发展&#xff0c;全球时序数据呈现爆炸式增长。据IDC预测&#xff0c;到2025年&#xff0c;全球物联网设备产生的数据量将达到79.4ZB&#xff0c;其中超过60%为时序数据。这类数据具有显著特征&#xff…

Ubuntu查看开机以来修改的文件

获取本次开机时间 uptime -s获取开机时间之后修改的文件 find /home -type f -newermt "2025-09-03 18:10:12"解读&#xff1a;-type f意为只查找类型为“普通文件”&#xff08;file&#xff09;&#xff0c;不包括目录、链接等。newermt 代表“修改时间比指定时间新…

差分隐私在运营指标:ABP 的 DP 计数器与噪声预算

&#x1f6a6; 差分隐私在运营指标&#xff1a;ABP 的 DP 计数器与噪声预算 &#x1f4da; 目录&#x1f6a6; 差分隐私在运营指标&#xff1a;ABP 的 DP 计数器与噪声预算0. TL;DR &#x1f680;&#x1f4c8; 一图看懂&#xff08;写入→发布→预算→加噪&#xff09;1. 背景…

洛谷 P1077 [NOIP 2012 普及组] 摆花-普及-

P1077 [NOIP 2012 普及组] 摆花 题目描述 小明的花店新开张&#xff0c;为了吸引顾客&#xff0c;他想在花店的门口摆上一排花&#xff0c;共 mmm 盆。通过调查顾客的喜好&#xff0c;小明列出了顾客最喜欢的 nnn 种花&#xff0c;从 111 到 nnn 标号。为了在门口展出更多种花&…

时序数据库选型指南:为何Apache IoTDB成为工业物联网首选

引言&#xff1a;时序数据管理的挑战与机遇 在工业4.0与物联网技术深度融合的今天&#xff0c;全球设备产生的时序数据量正以指数级增长。据IDC预测&#xff0c;到2025年物联网设备产生的数据将达79.4ZB&#xff0c;其中60%为时序数据。这类数据具有高频采集&#xff08;毫秒级…

【C++】C++入门—(中)

前言&#xff1a;上一篇文章我们介绍了C入门的一些基础的语法&#xff0c;将了命名空间&#xff0c;缺省参数等。这篇文章我们就来介绍剩余的语法。 文章目录一&#xff0c;函数重载二&#xff0c;引用2.1引用的概念和定义2.2引用的特性2.3引用的引用场景2.3.1做函数形参&#…

嵌入式Linux驱动开发:i.MX6ULL按键中断驱动(非阻塞IO)

嵌入式Linux驱动开发&#xff1a;i.MX6ULL按键中断驱动&#xff08;非阻塞IO&#xff09; 概述 本文档详细介绍了在i.MX6ULL开发板上实现按键中断驱动的完整过程。该驱动程序实现了非阻塞IO操作&#xff0c;允许用户空间应用程序通过poll系统调用高效地监控按键状态变化&…

从 @Schedule 到 XXL-JOB:分布式定时任务的演进与实践

从Schedule到XXL-JOB&#xff1a;分布式定时任务的演进与实践 在分布式系统中&#xff0c;定时任务是常见需求&#xff08;如数据备份、报表生成、缓存刷新等&#xff09;。Spring框架的Schedule注解虽简单易用&#xff0c;但在集群环境下存在明显局限&#xff1b;而XXL-JOB作为…

阿里云营业执照OCR接口的PHP实现与技术解析:从签名机制到企业级应用

一、阿里云营业执照OCR接口的核心技术架构 阿里云OCR服务基于深度学习模型和大规模数据训练,针对中国营业执照的版式特征(如统一社会信用代码位置、企业名称排版、经营范围换行规则等)进行了专项优化,识别准确率可达98%以上。其接口调用遵循RESTful API设计规范,采用HMAC…

AI人工智能大模型应用如何落地

AI人工智能大模型应用落地需要经过以下步骤&#xff1a; 明确应用场景和目标&#xff1a;首先需要明确AI大模型在哪个领域、解决什么问题。例如&#xff0c;在智能客服领域&#xff0c;AI大模型可以用于提高客户服务的效率和质量&#xff1b;在医学领域&#xff0c;AI大模型可以…

手写Muduo网络库核心代码2--Poller、EPollPoller详细讲解

Poller抽象层代码Muduo 网络库中的 Poller 抽象层是其事件驱动模型的核心组件之一&#xff0c;负责统一封装不同 I/O 复用机制&#xff08;如 epoll、poll&#xff09;&#xff0c;实现事件监听与分发。Poller 抽象层的作用统一 I/O 复用接口Poller 作为抽象基类&#xff0c;定…

基于MCP架构的OpenWeather API服务端设计与实现

随着微服务和模块化架构的发展&#xff0c;越来越多的系统倾向于采用可插拔、高内聚的设计模式。MCP(Modular, Collaborative,Pluggable)架构正是这样一种强调模块化、协作性和扩展性的设计思想。它允许开发者以“组件”方式组合功能&#xff0c;提升系统的灵活性与可维护性。 …

从“叠加”到“重叠”:Overlay 与 Overlap 双引擎驱动技术性能优化

在技术领域&#xff0c;“Overlay”和“Overlap”常因拼写相似被混淆&#xff0c;但二者实则代表两种截然不同的优化逻辑&#xff1a;Overlay 是“主动构建分层结构”&#xff0c;通过资源复用与隔离提升效率&#xff1b;Overlap 是“让耗时环节时间交叉”&#xff0c;通过并行…

【Vue2 ✨】 Vue2 入门之旅(六):指令与过滤器

前一篇我们学习了组件化开发。本篇将介绍 指令与过滤器&#xff0c;这是 Vue 模板语法的重要扩展&#xff0c;让页面渲染更加灵活。 目录 常见内置指令自定义指令过滤器小结 常见内置指令 Vue 提供了丰富的内置指令&#xff0c;常见的有&#xff1a; <div id"app&qu…

【随笔】【Debian】【ArchLinux】基于Debian和ArchLinux的ISO镜像和虚拟机VM的系统镜像获取安装

一、Debian Debian -- Debian 全球镜像站 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 debian-cd-current-amd64-iso-cd安装包下载_开源镜像站-阿里云 清华源&#xff1a; 清华大学开源软件镜像站 | Tsinghua Open Source Mirror USTC Open Source Software Mirror 二、…

如何用 Kotlin 在 Android 手机开发一个文字游戏,并加入付费机制?

Kotlin 开发 Android 文字游戏基础框架使用 Android Studio 创建项目&#xff0c;选择 Kotlin 作为主要语言。基础游戏逻辑可通过状态机和文本解析实现&#xff1a;class GameEngine {private var currentScene: Scene loadStartingScene()fun processCommand(input: String):…

安卓开发---BaseAdapter(定制ListView的界面)

概念&#xff1a;BaseAdapter 是 Android 中最基础的适配器类&#xff0c;它是所有其他适配器&#xff08;如 ArrayAdapter、SimpleAdapter&#xff09;的父类。方法签名&#xff1a;public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter { // 获取数据…

Conda配置完全指南:Windows系统Anaconda/Miniconda的安装、配置、基础使用、清理缓存空间和Pycharm/VSCode配置指南

本文同步发布在个人博客&#xff1a; Conda配置完全指南Conda 是一个开源的跨平台包管理与环境管理工具&#xff0c;广泛应用于数据科学、机器学习及 Python 开发领域。它不仅能帮助用户快速安装、更新和卸载第三方库&#xff0c;还能创建相互隔离的虚拟环境&#xff0c;解决不…

什么是账号矩阵?如何避免账号IP关联风险

账号矩阵是指在同一平台或多个平台上&#xff0c;围绕同一品牌、业务或个人 IP 构建的多个相互关联、协同运作的账号体系。这些账号通过差异化的内容定位和运营策略形成互补&#xff0c;共同实现流量聚合、品牌曝光或业务拓展的目标。协同效应&#xff1a;账号间通过内容互推、…

解析ELK(filebeat+logstash+elasticsearch+kibana)日志系统原理以及k8s集群日志采集过程

ELK日志系统解析 ELK 日志系统&#xff08;现常称为 Elastic Stack&#xff0c;由 Filebeat、Logstash、Elasticsearch、Kibana 组成&#xff09;是一套用于 日志收集、清洗、存储、检索和可视化 的开源解决方案。 它的核心价值是将分散在多台服务器 / 应用中的日志 “汇聚成池…