Sed 命令

本文介绍sed编辑器的基本概念,包括其非交互式编辑特性、工作流程及命令格式。涵盖sed的定位方式、常见命令如打印(p)、删除(d)、替换(s)、追加(a)等,以及如何利用sed进行文本处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sed 简介:


sed 是一种新型的,非交互式的编辑器。它能执行与编辑器 vi 和 ex 相同的编辑任务。sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。 sed 编辑器没有破坏性,它不会修改文件,除非使用 shell 重定向来保存输出结果。默认情况下,所有的输出行都被打印到屏幕上。 

sed 工作过程:


sed 编辑器逐行处理文件(或输入),并将输出结果发送到屏幕。 sed 的命令就是在 vi和 ed/ex 编辑器中见到的那些。 sed 把当前正在处理的行保存在一个临时缓存区中,这个缓存区称为模式空间或临时缓冲。sed 处理完模式空间中的行后(即在该行上执行 sed 命令后),就把改行发送到屏幕上(除非之前有命令删除这一行或取消打印操作)。 sed 每处理完输入文件的最后一行后, sed 便结束运行。 sed 把每一行都存在临时缓存区中,对这个副本进行编辑,所以不会修改或破坏源文件。如图 1: sed 处理过程。 

Sed 命令格式

sed 命令行格式为: sed [选项] ‘ command’ 输入文本

Sed 定位

Sed 命令在没有给定的位置时,默认会处理所有行;
Sed 支持一下几种地址类型:
1、 first~step
 这两个单词的意思: first 指起始匹配行, step 指步长,例如: sed -n 2~5p 含义:从第二行开始 匹配, 隔 5 行匹配一次,即 2,7,12.......。
2、 $
 这个$符表示匹配最后一行。
3、 /REGEXP/
 这个是表示匹配正则那一行,通过//之间的正则来匹配。
4、 \cREGEXPc
 这个是表示匹配正则那一行,通过\c 和 c 之间的正则来匹配,c 可以是任一字符
5、 addr1, add2 
 定址 addr1, add2 决定用于对哪些行进行编辑。地址的形式可以是数字、正则表达式或二者的结 合。如果没有指定地址, sed 将处理输入文件中的所有行。如果定址是一个数字,则这个数字代表 行号,如果是逗号分隔的两个行号,那么需要处理的定址就是两行之间的范围(包括两行在内)。 范围可以是数字,正则或二者组合。 
6、 addr1, +N
 从 addr1 这行到往下 N 行匹配,总共匹配 N+1 行
7、 addr1, ~N
 Will match addr1 and the lines following addr1 until the next line whose input line number is a  multiple of N.【没有看懂是什么意思】

报错信息和退出信息

遇到语法错误时, sed 会向标准错误输出发送一条相当简单的报错信息。但是,如果 sed判断不出错在何处,它会“断章取义”,给出令人迷惑的报错信息。如果没有语法错误, sed将会返回给 shell 一个退出状态,状态为 0 代表成功,为非 0 整数代表失败

Sed 的正则表达式
在这里插入图片描述
sed的常用选项

在这里插入图片描述
Sed 操作命令

在这里插入图片描述

打印: p 命令

[root@Gin scripts]# sed '/north/p' ceshi.txt 

删除: d 命令

[root@Gin scripts]# sed '3d' ceshi.txt 

替换: s 命令

[root@Gin scripts]# sed 's/west/north/g' ceshi.txt 

多重编辑: e 命令

[root@Gin scripts]# sed -e '1,3d' -e 's/Hemenway/Jones/' ceshi.txt 

追加: a 命令

[root@Gin scripts]# sed '/^north/a Hello world!' ceshi.txt  

插入: i 命令

[root@Gin scripts]# sed '/eastern/i Hello,world!\

修改: c 命令

[root@Gin scripts]# sed '/eastern/c Hello,world! \

获取下一行: n 命令

[root@Gin scripts]# sed '/eastern/{n;s/AM/Archie/;}' ceshi.txt 

转换: y,命令

[root@Gin scripts]# sed '1,3y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' ceshi.txt 

退出: q 命令

[root@Gin scripts]# sed '5q' ceshi.txt 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值