9.文件处理三剑客: sed awk grep
1|0引入
🌀我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等
🌀如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令
🌀但是这些命令效率不高,而在linux中有三种工具:顶配awk,中配sed,标配grep
🌀使用这些工具,我们能够在达到同样效果的前提下节省大量的重复性工作,提高效率
🌀文件内容可以是来自文件,也可以直接来自键盘或者管道等标准输入,最后的结果默认情况下是显示到终端的屏幕上,但是也可以输出到文件中
🌀编辑文件也是这样,以前我们修改一个配置文件,需要移动光标到某一行,然后添加点文字,然后又移动光标到另一行,注释点东西.......可能修改一个配置文件下来需要花费数十分钟,还有可能改错了配置文件,又得返工
🌀这还是一个配置文件,如果数十个数百个呢?因此当你学会了sed命令,你会发现利用它处理文件中的一系列修改是很有用的
🌀只要想到在大约100多个文件中,处理20个不同的编辑操作可以在几分钟之内完成,你就会知道sed的强大了✅
🔵天然支持管道
2|0一.文本处理之sed
2|11.什么是sed
- sed 被称为流式编辑器
- 主要擅长对文件的编辑操作
- 用法 : 事先制定好编辑文件的规则, 然后让sed自动完成对文件的整体编辑
2|22.为什么用sed (与vim对比)
- 处理多个文件时
- 处理大文件时
2|33.sed的工作原理
- sed 读取一行, 首先将这行放入到缓存中
- 然后对其进行规则处理
- 处理完成后才将缓存区的内容发送到终端屏幕
- 存储 sed 读取到的内容的缓存区空间称之为 : 模式空间
2|44.怎么用sed
-
语法结构
-
常用选项
选项 | 功能 |
---|---|
-n | 取消默认输出 |
-i | 直接修改文件内容 (规则处理的结果 + 默认输出的结果) 覆盖入文件, 而不是输出 |
ps : 如果不使用 -i 选项 sed 软件只是修改在内存中的数据,并不会影响磁盘上的文件
-
规则 (定位 + 命令)
- 行号定位
- 正则定位
-
常用命令
命令 | 功能 |
---|---|
p | 打印模式空间的内容 |
d | 删除指定的行 |
i | 插入, 在指定行前面添加一行或者多行 |
s///gi | 替换字符 |
2|55.应用示例
- sed '2p' a.txt
- 加入 "-n" 选项来阻止默认输出
- sed '2,5p' a.txt
- sed "3d;5d;7d" a.txt
- 加入 "-i" 选项让修改内容写入文件
- sed -i '/^song/s/song/xing/g' a.txt
- 加入 "i" 选项不区分大小写替换
- ifconfig ens32 | sed 's/ens32/shawn/g'
- 取反操作 "!"
3|0二.文件处理之awk
3|11.AWK
- 主要擅长处理有规律的文本, 主要用于一些格式化处理
- awk不仅仅是 linux系统中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告(excel)
- 处理的数据可以是一个或多个文件,可以是来自标准输入,也可以通过管道获取标准输入
- awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行更为复杂的运用。
3|22.用法
-
语法结构
-
awk选项
-
规则 (定位 + 命令)
- 行号定位
- 正则定位
-
命令
3|33.应用示例
- awk -F: 'NR == 3{print $1,$5}' b.txt
- awk -F: 'NR >= 3 && NR <= 8{print $0}' b.txt
- awk -F: 'NR == 1 || NR == 3{print $NF}' b.txt
- awk -F: '/^root/{print $0}' b.txt
- awk -F: '/bash$/{print $(NF-2)}' b.txt
4|0三.文件处理之grep
4|11.grep作用
- 过滤文本内容
4|22.用法
-
语法
-
常用选项
选项 | 功能 |
---|---|
-n | 显示行号 |
-i | 忽略大小写 |
-l | 过滤的文件只要有匹配字符就会返回文件名 |
-r | 目录下带有关键字的文件 |
-
常用规则
符号 | 描述 |
---|---|
^ | 匹配以某个字符开头的行 |
$ | 匹配以某个字符结尾的行 |
4|33.应用示例
- grep -n 'song' a.txt
- grep -in '^song' a.txtgre
- grep -r 'song' /root
- grep -rl 'song' /root
4|44.grep通过管道过滤进程信息
- 在一个终端上打开一个vim进程
-
通过 ps aux | grep '[v]im' 过滤 "vim" 进程
-
通过 kill -9 24762(进程号杀死它)
4|55.Windows下杀进程
- ctrl + alt + delete 调用任务管理器, 右击任务终止
- 以管理员身份进入 cmd 解释器
- tasklist 显示当前进程, PID是进程号
- 使用 tasklist | findstr "WeChat.exe" 通过查找进程名来找到 PID
- 使用 taskkill /F /PID 9900 通过PID号来终止进程
__EOF__
本文作者:ଲ小何才露煎煎饺
本文链接:https://www.cnblogs.com/zeny/articles/14409650.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/zeny/articles/14409650.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:ଲ小何才露煎煎饺,转载请注明原文链接:https://www.cnblogs.com/zeny/articles/14409650.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报