Linux sed的原理和用法

本文详细介绍了Linux的sed编辑器,包括其非交互式和流式处理的特点。讲解了sed的基本命令格式、地址范围指定、文本替换以及高级用法,如模式空间和保持空间的概念及其相关参数。通过实例演示了sed如何对文本进行处理,如行选择性打印、正则表达式匹配以及内容替换等操作。
摘要由CSDN通过智能技术生成

什么是sed?

sed是一种非交互式流式编辑器,这里有两个关键字,非交互式和流式
非交互式就是指sed只能够在命令行下输入编辑命令来对文本进行编辑,然后在屏幕上查看输出。
流式是指sed每次只从文件中读入一行,然后对该行进行指定的处理,并将处理结果输出到屏幕上,处理完后在读入下一行。
sed对文本的过程处理如下:
(sed的原理.png)

sed的使用

命令格式

sed     [options]   'comandstring' file
sed     [options]   -f  script file
//script表示需要对输入执行的一个或者多个操作指令。

相关选项

-e:表示以选项中指定的script来处理输入的文件,也就是可以对输入执行多条指令的意思。
-f :表示以选项中的script文件来处理输入的文本文件,也就是把sed指令可以写在文件中。
-n:表示仅仅显示sed的command处理完后的结果。

相关命令

a:表示在当前行下面插入文本。
i :表示在当前行的上面插入文本。
c:表示把选定的行改为新的文本。
d:表示删除经过pattern匹配所选中的行。
D:表示删除模式空间中的第一行。
s:表示替换指定的字符。
p:表示打印模式空间中的所有行。
P:表示只打印模式空间中的第一行。
q:表示退出sed。
b label:表示跳转到脚本中带有标记label的地方,如果标记不存在则跳转到脚本的末尾。
r  file:表示从file中读取一行。

sed的使用实例

好了,上面讲解了sed的命令格式、参数和命令,下面我们来开始进行实战,对上面的参数和命令来进行测试

指定执行行的地址的范围(定址)

sed可以对单行或者多行进行处理,如果sed命令前面不指定地址范围,那么会默认匹配所有行。

**命令格式:**sed n1[,n2] {sed-command}
其中n1和n2代表行号,可以直接指定数字,或者通过正则表达式来进行匹配。

对指令进行测试的文本如下:

[lzh@leap_ sed_test]$ cat test.c 
#include<stdio.h>

int main()
{
    start
    printf("H
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值