什么是sed?
sed是一种非交互式的流式编辑器,这里有两个关键字,非交互式和流式
非交互式就是指sed只能够在命令行下输入编辑命令来对文本进行编辑,然后在屏幕上查看输出。
流式是指sed每次只从文件中读入一行,然后对该行进行指定的处理,并将处理结果输出到屏幕上,处理完后在读入下一行。
sed对文本的过程处理如下:
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("Hello,World\n");
printf("Hello,World\n");