# Shell 文本处理三剑客:awk、sed 与常用小器具详解

news/2025/9/23 19:57:23/文章来源:https://www.cnblogs.com/tlnshuju/p/19107950

# Shell 文本处理三剑客:awk、sed 与常用小器具详解

2025-09-23 19:54  tlnshuju  阅读(0)  评论(0)    收藏  举报

文章目录

    • 一、awk:文本分析工具
      • 1. 概述
      • 2. 工作原理
      • 3. 基本语法
      • 4. 常用内置变量
      • 5. 实战示例
        • ① 打印指定列
        • ② 条件过滤
        • ③ 统计行数
        • ④ 使用 BEGIN 和 END
    • 二、sed:流编辑器
      • 1. 概述
      • 2. 工作原理
      • 3. 常用选项
      • 4. 常用命令
      • 5. 实战示例
        • ① 替换文本
        • ② 删除行
        • ③ 插入内容
        • ④ 提取IP地址
    • 三、常用文本处理小工具
      • 1. cut:按列截取
      • 2. sort:排序
      • 3. uniq:去重(需先排序)
      • 4. tr:字符替换/删除
    • 四、生产环境综合应用
      • 1. SS
    • 五、总结对比


一、awk:文本分析工具

1. 概述

AWK 是一种强大的文本处理语言,适用于扫描、过滤、统计和格式化文本输出。其名称来源于三位创始人姓氏的首字母:Alfred Aho、Peter Weinberger 和 Brian Kernighan。

2. 工作原理

  • 逐行读取输入(文件、管道或标准输入)
  • 按指定分隔符(默认为空格或制表符)分割每行为多个字段
  • 根据模式匹配执行相应动作
  • 支持变量、条件判断、循环等编程结构

3. 基本语法

awk [选项] '模式 { 动作 }' 文件

4. 常用内置变量

变量说明
$0当前整行内容
$1, $2…第1、2…个字段
NF当前行的字段数
NR当前行号
FS输入字段分隔符(默认空格)
OFS输出字段分隔符(默认空格)
FILENAME当前文件名

5. 实战示例

① 打印指定列
awk -F: '{print $1,$3}' /etc/passwd # 以冒号分隔,输出第1和第3列

在这里插入图片描述

② 条件过滤
awk -F: '$3 >= 1000 {print $1}' /etc/passwd # 输出UID≥1000的用户名

在这里插入图片描述

③ 统计行数
awk 'END{print NR}' /etc/passwd # 打印总行数

在这里插入图片描述

④ 使用 BEGIN 和 END
awk 'BEGIN{FS=":";OFS="--"} {print $1,$NF} END{print "处理结束"}' /etc/passwd

在这里插入图片描述

二、sed:流编辑器

1. 概述

sed 用于对文本进行流式编辑,支持查找、替换、删除、插入等操作,适用于自动化脚本和批量处理。

2. 工作原理

  • 逐行读取文本到模式空间(pattern space)
  • 按脚本指令处理文本
  • 将结果输出到标准输出
  • 默认不修改原文件(除非使用 -i 选项)

3. 常用选项

选项说明
-n禁止默认输出
-e执行多条命令
-f从文件读取命令
-i直接修改原文件
-r使用扩展正则表达式

4. 常用命令

命令说明
s替换
d删除
p打印
a在行后插入
i在行前插入
c替换整行

5. 实战示例

① 替换文本
sed 's/old/new/g' file.txt # 全局替换
sed -i 's/old/new/g' file.txt # 直接修改原文件
② 删除行
sed '1,5d' file.txt # 删除1~5行
sed '/pattern/d' file.txt # 删除匹配行
③ 插入内容
sed '3a\插入的内容' file.txt # 在第3行后插入
sed '/pattern/i\插入的内容' file.txt # 在匹配行前插入
④ 提取IP地址
ifconfig ens33 | sed -rn '2s/.*inet ([0-9.]+).*/\1/p'

案例:

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

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

三、常用文本处理小工具

1. cut:按列截取

- `-b`:按字节截取
- `-c`:按字符截取(中文推荐用 `-c`)
- `-d`:指定分隔符(默认 TAB)
- `-f`:指定字段(需配合 `-d`

在这里插入图片描述在这里插入图片描述截取第9列的字符
截取第1和9列的字符
截取第1-9列的字符
截取第1列

2. sort:排序

  • -t:指定分隔符
  • -k:指定排序字段
  • -n:按数值排序(默认是字典序)
  • -r:降序
  • -u:去重(等价于 uniq
  • -o:输出到文件
sort passwd.txt # 按第一列升序
sort -n -t: -k3 passwd.txt # 以冒号分隔,按第3列数值升序
sort -nr -t: -k3 passwd.txt # 第3列数值降序
sort -u passwd.txt # 去重
sort -nr -t: -k3 passwd.txt -o out.txt # 排序结果保存

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

3. uniq:去重(需先排序)

  • -c:对重复的行进行计数
  • -d:只显示重复行
  • -u:只显示唯一行
uniq fruit.txt # 去掉相邻重复行
sort fruit.txt | uniq # 全局去重
sort fruit.txt | uniq -c # 统计每行出现次数
sort fruit.txt | uniq -d # 只显示重复行
sort fruit.txt | uniq -u # 只显示不重复行
或者这样写 cat fruit.txt | sort | uniq -u

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

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

4. tr:字符替换/删除

  • -d:删除字符
  • -s:压缩重复字符,只保留一个
tr 'a-z' 'A-Z' < l.sh # 小写转大写
或cat l.sh | tr 'a-z' 'A-Z'
cat fruit | tr 'apple' 'APPLE' #替换是一一对应的字母的替换
cat l.sh | tr 'a' ' ' #把替换的字符用单引号引起来,包括特殊字
cat l.sh | tr 'apple' 'star' #a替换成s,p替换成a,le替换成r
tr 'a' '/' < l.sh # 替换 a -> / 多个字符替换成一个tr -d 'a' < l.sh # 删除所有 atr -d '\n' < l.sh # 删除换行符tr -s 'p' < l.sh # 连续 p 压缩成一个

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

四、生产环境综合应用

1. SS

ss -nt | tr -s " " | cut -d " " -f5 | cut -d: -f1 | sort | uniq -c #统计当前连接主机数
ss -nta | grep -v '^State' | cut -d" " -f1 | sort | uniq -c #统计当前主机连接状态
who | awk '{print $1}' | uniq #查看当前用户
last | awk '{print $1}' | sort | uniq | grep -v "^$" | grep -v wtmp #查看登录过的用户

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

五、总结对比

工具适用场景特点
awk复杂字段处理、统计、格式化输出支持编程结构,功能强大
sed流式编辑、替换、删除、插入轻量高效,适合批量处理
cut按列截取简单快捷,适合固定格式
sort排序支持数值和字典序
uniq去重(需先排序)只能处理相邻重复行
tr字符替换、删除、压缩只能处理单个字符

如有疑问或进一步需求,欢迎在评论区留言!

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

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

相关文章

巴中模板建站价格多少网站备案 个人 单位

Flying-Saucer是一个不错的库&#xff0c;可以从Java应用程序中生成PDF文档。 只需生成一堆XHTML&#xff0c;然后将其放入渲染器中&#xff0c;然后使用iText生成所需的文档即可。 但是&#xff0c;当涉及条形码时&#xff0c;Flying-Saucer无法访问iText的内置条形码功能&am…

重庆网站建设changeke垂直网站怎么做

文章目录 【方法一】运用哈密顿凯莱定理相关例题 【方法二】运用特征方程二阶矩阵求解通法三阶矩阵求解通法相关例题 市面上许多资料给出的计算矩阵高次幂的方法&#xff0c;无外乎有这几种&#xff1a; 分块矩阵求解高次幂&#xff1b;先求低次方幂&#xff0c;然后通过找规律…

建设工程检测中心网站网站规划设计是什么

spContent《C语言程序设计》是高等学校本科教育普遍开设的一门课程&#xff0c;是广大程序设计语言学习者首选的入门课程。本课程立足于C语言基础知识的讲解&#xff0c;讲授中引入大量实例&#xff0c;突出重点&#xff0c;剖析难点&#xff0c;培养学生结构化程序设计的思想&…

网站建设 万网 域名做空包网站合法吗

函数概述 函数&#xff1a;组织好的、可重复使用的。杉树能提高应用的模块性和代码的重复利用性。Python提供了很多的内置函数&#xff0c;比如len()等等&#xff0c;可以自行定义函数。 函数的定义 def 函数名&#xff08;参数列表&#xff09;&#xff1a; #函数定义 函数体…

网站建设的公司哪家是上市公司互动性的网站

List item 本篇将介绍Linux的时间管理&运行级别相关知识&#xff0c;并将深入介绍Linux的启动过程及原理。 Linux的时间管理 Linux 时钟分为系统时钟&#xff08;System Clock&#xff09;和硬件&#xff08;Real Time Clock&#xff0c;简称 RTC&#xff09;时钟。系统时…

老的网站为什么要改版新网站北京seowyhseo

最近对一系列基于3D Gaussian Splatting&#xff08;3DGS&#xff09;SLAM的工作的源码进行了测试与解读。为此写下本博客mark一下所有的源码解读以及对应的代码配置与测试记录~ 其中工作1~5的原理解读见博客&#xff1a; 学习笔记之——3D Gaussian Splatting及其在SLAM与自动…

大连龙彩科技的网站在谁家做公司网络安全管理制度和应急工作预案

笔记本屏幕的色域 72%NTSC和100%sRGB有什么区别2018-09-15 11:00:05247点赞724收藏60评论无论是选购普通笔记本还是游戏本&#xff0c;大家除了关心产品的外观和配置外&#xff0c;越来越多的朋友把重点放在了屏幕上&#xff0c;也许TN屏和IPS屏大家很好判断哪个更好&#xff0…

Avalonia 学习笔记07. Control Themes(控件主题)

在本章节中,我们的目标是创建一个可复用的、带图标的按钮控件,以简化我们在视图(View)中编写的XAML代码。当前,每创建一个带图标的按钮,都需要在 <Button> 内部嵌套一个 <StackPanel> 和两个 <La…

二手站网站怎做韩国外贸平台

在达梦数据库系统中&#xff0c;死锁是指两个或多个事务相互等待对方释放资源&#xff0c;从而造成循环等待的现象&#xff0c;严重影响数据库的正常运行。以下是使用达梦数据库进行死锁排查和解决的具体步骤&#xff1a; 死锁查看 查询当前死锁信息 SELECT lc.lmode, lc.ta…

网站建设比赛方案阿里巴巴网站架构

大家都知道&#xff0c;在Mac上进行文件拖拽是一件非常方便的事情。然而&#xff0c;随着我们在工作和生活中越来越多地使用电脑&#xff0c;我们对于这个简单操作的需求也越来越高。为了让您的文件拖拽体验更加高效和便捷&#xff0c;今天我们向大家介绍一款强大的工具——Dro…

南宁建设厅网站是什么学校网站建设实训总结

91. 请描述一下Intent 和 IntentFilter ?Intent是组件的通讯使者,可以在组件间传递消息和数据。 IntentFilter是intent的筛选器,可以对intent的action,data,catgory,uri这些属性进行筛选,确定符合的目标组件🚀🚀🚀🚀🚀🚀92. 阐述什么是IntentService?有何优…

php网站开发技术前景品牌建设的最高境界是培育客户的

图片来源&#xff1a;Thomas Hainmller, Marlene Bartos来源&#xff1a;生物谷摘要&#xff1a;最近&#xff0c;一项刊登在国际杂志Nature上的研究报告中&#xff0c;来自弗莱堡大学的科学家们通过研究开发出了一种新型模型来解释大脑如何储存一些“有形事件”&#xff08;ta…

网站tkd优化如何鉴别网站有没有做301重定向

任何简单或复杂的算法都可以由三种基本结构组成&#xff1a;顺序结构&#xff0c;选择结构&#xff0c;循环结构。 顺序结构 比较一般的结构&#xff0c;程序从上到下执行。 选择结构 我们从最简单的单路选择开始&#xff0c;符合条件的进入语句序列&#xff0c;不符合条件的…

dedecms网站根目录重庆专业网站设计服务

题目&#xff1a; 给定一个包含 n 个整数的数组 nums 和一个目标值 target&#xff0c;判断 nums 中是否存在四个元素 a&#xff0c;b&#xff0c;c 和 d &#xff0c;使得 a b c d 的值与 target 相等&#xff1f;找出所有满足条件且不重复的四元组。 注意&#xff1a; …

网站设计策划方案wordpress 移动导航呼出

一、网络加密的方式及实现 1、常见的加密算法 常见的密钥加密算法类型大体可以分为三类:对称加密、非对称加密、单向加密。 对称加密算法采用单密钥加密&#xff0c;在通信过程中&#xff0c;数据发送方将原始数据分割成固定大小的块&#xff0c;经过密钥和加密算法逐个加密…

网站个人备案 企业备案提供手机网站制作哪家好

nvm安装后nvm -v有效&#xff0c;node指令无效 环境变量配置无问题 推荐方案 下载你需要的node版本 Index of /dist/ (nodejs.org) 下载后解压到你的nvm存储版本的位置 cmd进入切换你的使用版本&#xff08;此时你的nodejs是从网上下载的&#xff0c;npm文件是存在的&…

江门 网站设计wordpress添加留言板

3月25日vim相关操作 题目1&#xff1a; 1&#xff09;将/etc/hosts网络配置文件复制到/tmp/mydir下&#xff1b; 2&#xff09;使用vim编辑器打开hosts文件&#xff0c;按i进入编辑模式&#xff0c;将本机IP地址和主机名(client1)映射。 3&#xff09;按下esc键回到命令模式…

matter 协议的架构;

Matter 协议栈分为多个层级: 应用层:定义设备的业务逻辑(如门锁、灯光控制等)。 数据模型层:通过“集群(Cluster)”组织属性、命令和事件,确保不同厂商设备的互操作性。 交互模型层:定义客户端与服务端之间的…

matter 协议解析;

Matter 协议(原名 Project CHIP,Connected Home over IP)是由 Connectivity Standards Alliance (CSA) 推出的开源应用层标准,旨在为智能家居设备、移动应用和云服务之间提供统一的通信协议,实现不同厂商 IoT 设备…

相机标定(Camera Calibration)原理及步骤:从 “像素模糊” 到 “毫米精准” 的关键一步 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …