Sed详解

Sed是一种非交互式编辑器,它逐行处理文件并在屏幕上显示结果,不破坏源文件。本文介绍了Sed的工作过程、命令格式、常用选项以及各种操作命令,如查、删、改、增等,并通过范例展示了其实际应用。
摘要由CSDN通过智能技术生成

1. Sed 简介

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

1.1 sed 工作过程 

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

如图 1:sed 处理过程。

 从上图可以看出 sed 不是破坏性的,它不会修改正在编辑的文件。

1.2 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 行

1.3 sed 的常用选项

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sed(Stream Editor)是一种流式文本编辑器,它可以在处理文件时实时编辑文本流。它是一个非交互式的编辑器,可以从标准输入或文件中读取文本,并将结果输出到标准输出。Sed主要用于自动化文本编辑任务,例如搜索和替换、删除行、转换字符、添加或删除行等。以下是Sed常用的命令和选项: ## 基本语法 sed [选项]... [脚本] [输入文件]... - 选项:用于指定Sed的行为,例如-i选项表示原地修改文件。 - 脚本:用于指定Sed的操作,例如s/old/new/表示将文本中的old替换为new。 - 输入文件:要处理的文件名或标准输入。 ## 常用命令 1. 替换文本 替换命令格式为:s/old/new/g,其中old表示要被替换的文本,new表示替换后的文本,g表示全局替换。 示例: ``` sed 's/old/new/g' file.txt # 将file.txt中的old替换为new sed -i 's/old/new/g' file.txt # 将file.txt中的old替换为new,并原地修改文件 ``` 2. 删除行 删除命令格式为:d,表示删除当前行。 示例: ``` sed '1d' file.txt # 删除file.txt的第一行 sed '1,3d' file.txt # 删除file.txt的第1-3行 sed '/pattern/d' file.txt # 删除file.txt中匹配pattern的行 ``` 3. 插入和追加行 插入和追加命令格式为:i和a,分别表示在当前行前插入和在当前行后追加一行文本。 示例: ``` sed '1i new line' file.txt # 在file.txt的第一行前插入new line sed '1a new line' file.txt # 在file.txt的第一行后追加new line ``` 4. 替换指定行 替换指定行命令格式为:numc\new text,其中num表示要替换的行号,new text表示替换后的文本。 示例: ``` sed '1c\new line' file.txt # 将file.txt的第一行替换为new line ``` ## 常用选项 1. -i -i选项表示原地修改文件,即在文件中直接修改文本,而不是输出到标准输出。 示例: ``` sed -i 's/old/new/g' file.txt # 将file.txt中的old替换为new,并原地修改文件 ``` 2. -n -n选项表示禁止输出文本,只有通过p命令才能输出。 示例: ``` sed -n '/pattern/p' file.txt # 只输出包含pattern的行 ``` 3. -e -e选项表示允许多个编辑命令。 示例: ``` sed -e 's/old/new/g' -e '1d' file.txt # 将file.txt中的old替换为new,并删除第一行 ``` 4. -r -r选项表示启用正则表达式的扩展语法。 示例: ``` sed -r 's/(\w+) (\w+)/\2, \1/' file.txt # 将file.txt中的每行文本中的第一个单词和第二个单词颠倒顺序 ``` 以上是Sed的基础用法,还有许多高级特性和选项可以掌握,例如正则表达式、标签、分组等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值