Shell—11.sed

sed(stream editor)是一种几乎包括在所有unix平台的轻量级流编辑器

sed主要是用来将数据进行选取、替换、删除和新增的命令


 

基本语法

- sed [选项] '[动作]' 文件名

- 常用选项
| -n 一般sed会把所有数据输出到屏幕;加-n则只把经sed处理的行输出到屏幕
| -e 允许对输入数据用多条sed命令编辑;-e连接多条命令 sed -e aa -e bb
| -i 用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
| -r 支持扩展表达式

- 加不加-n的区别


 
支持的动作

a\ 追加
c\ 替换
i\ 插入
d 删除
p 打印       print
s 字串替换   substitute
g 修饰符

--- 示例 ---
sed -n '2p' student.txt 只输出第二行
sed '2,4d' student.txt 删除第二到第四行
sed 's/旧字串/新字串/g' 文件名
sed '4s/99/55/g' student.txt 修改配置文件
sed 's/li//g; s/wang//g' student.txt 替换所有li wang 为空
sed '2c no such person' student.txt 行替换

 

动作分类

sed 查找

- p 即print

- 1."1p" "2p" 精确查找
- 2."1,5p" 指定范围查找
- 3."//p"  类似于grep 过滤 两个/之间价查找内容 支持正则
- 4."/10:00/,/11:00/p"  表示范围的过滤
- 5.sed -n "$p" 1.txt 取最后一行
- 6.sed 不支持扩展正则   需要sed -r才可以
- 7.表示范围过滤的时候,如果结尾的内容匹配不到就会一直显示到最后一行


 
sed 删除

- d 即delete

- 删除文件中的空行和包含#号的行
| egrep -v '^$|#' /etc/ssh/sshd_config
| sed -r '/^$|#/d' /etc/ssh/sshd_config

- !的妙用
| sed -r '/^$|#/!p' /etc/ssh/sshd_config 遇到空行和#号行不显示


 
sed 增加

- cai
| 1.a append 追加 向指定的行或每行追加内容
| 2.i insert 插入 向指定的行或每行插入内容
| 3.c replace 替代这行



 
sed 替换

- s 即substitute

- sed的s默认只替换每行第一个匹配的内容 g是global是全局替换
- 格式 s#被替换内容#新内容#g   #号可以换成任意字符

后向引用

- 也叫反向引用;口诀:先保护,再使用

- ()意思是先保护起来,但是()是扩展正则 需要加-r
- <\1> 表示第一个()


ip a s eth0 | sed -rn '3s#^.*t (.*)/.*$#\1#gp'      # 这里是把"3p"拆开了

stat /etc/hosts | sed -n 4p | sed -r "s#^.*(0)(.*)(/-.*$)#\2#g"
### 命令结果有你想要的内容或不想要内容,别着急管道处理,先看命令帮助 ###
stat -c%a /etc/hosts
posted @   梵高de画笔  阅读(39)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示