sed(stream editor),流编辑器,是一个批处理编辑器,它可以对来自文件或者标准输入输出流进行处理
sed的语法格式如下:
sed [-n] 程序 [-i] 文件
sed [-n] -f 程序文件 [-i]文件
-n 仅显示处理后的结果
文件就是要处理的文件,如果没有文件,则从标准输入获取输入流
程序就是在命令行中输入的程序;
程序文件就是将多个sed的程序段写文件文件中,然后使用-f选项来使用程序文件,而不用在命令行输入 。
使用-i参数,sed将执行结果不输出到标准输出,而是输出到原文件中
sed程序由一行或者多行命令组成
sed 命令的格式如下:
[地址[,地址]] 指令 [参数列表]
如果想要多个sed命令放在一行,可以使用;进行分隔
行号可以作为地址来选择某一行。
正则表达式可以用来选择符合条件的行做为地址
如果没有指定地址,则sed处理所有行
指令:
d 删除
sed ‘/aaa/d’ file 删除file中含有aaa的行
a 追加,在指定的行的下一行后边追加文本
sed ‘1,3 a hello world’ 在第1到3行的每一行的下一行追加hello world
i 插入,在指定行的前一行插入文本
sed ‘1 i hello world’ file 在第1行 的前一行插入hello world
c 修改 ,修改指定行的内容
sed ‘2 c hello world’ file 将第二行的内容修改为hello world
s 替换,将指定行中的符合要求的文本替换为指定文本
格式:
[address[,address]] s/模式/替换内容/[g] [p] [w 文件]
模式是一个正则表达式
g、p、w为可选内容
g 全部替换,否则只替换每行中第一个符合模式的文本
p 将选定的行(替换后的)写入标准输出
w 将选定的行(替换后的)写入到标注文件中
sed 's/a\{5,\}/bbbbb/g' file 将aaaaa替换为bbbbb
sed ‘s/hello/bbbbb/g w text’ file 将aaaaa替换为bbbbb
并且将选定的行写入到文件text中
sed ‘s/hello/&1 world/g’ 将hello替换hello world ,$代表搜索字符串
l 将不显示的字符打印出来
sed ‘l’ file
w 将指定行写入到文件中
sed ‘2,5 w h’ text 将2到5行写入到文件h中
y 转换字符
格式 y/字母/字母/
sed ‘y/abc/xyz/’ file
将所有的字母a、b、c分别转换为x、y、z
=打印行号
sed ‘=’ file
! 使得sed命令作用于没有被选中的每一行
sed ‘3!d’ file 删除除第3行之外的所有行
sed ‘/a/!d’ file 删除不含a的所有行
sed ‘s/a/d/’
在将接下来的几个命令之前,先介绍sed中的两个重要数据空间:hold space和pattern space;
pattern space(数据空间),首先要了解sed的执行过程,sed首先从输入中获得一行文本,然后将数据存放在pattern space中,然后sed处理pattern space中的数据,然后将处理过的pattern space中的输出.
通过了解以上的sed的工作方式,就可以明白pattern space的作用了。
hold space 是sed中的一个数据暂存区,用来暂存一些数据。
了解了以上的两个数据空间,就可以讲讲下面的几个命令了
g 拷贝数据从 hold space。
G 添加数据从 hold space 到 pattern space 。
h 拷贝数据从 pattern space 至 hold space 。
H 添加资料从 pattern space 至 hold space 。
x 交换 hold space 与 pattern space 内容。
阅读(715) | 评论(0) | 转发(0) |