1.概念
- sed(stream editor):行编辑器
- 是一种在线编辑器,一次处理一行内容
- 处理时,将当前处理的行存储在临时缓冲区,称为“模式空间”(pattern space)
- 接着用sed编辑命令处理缓冲区的内容,处理完成后,把缓冲区的内容送往屏幕
- 接着处理下一行,这样不断重复,直到文件末尾
- vim(交互式编辑器)
- 在线编辑器比交互式编辑器快很多,在处理数据流时
- 注意:
- 自身不会修改文本文件的原始数据,只会将修改都的数据发送到标准输出上,即控制台上
2.应用
-e script | 在处理输入时,将script中指定的命令添加到运行的命令中 |
---|---|
-f file | 在处理输入时,将file中指定的命令添加到运行的命令中 |
-n | 不要为每个命令生成输出,等待print命令来输出 |
- 标记替换
sed 's/test/trial/' b
#只替换第一个单词
sed 's/test/trial/g' b
#替换文本中每处出现的内容
sed 's/test/trial/2' b
#替换文本中第二次出现的内容
sed 's/test/trial/p' c
#替换标记会打印包含与命令中执行的模式匹配的行
sed -n 's/test/trial/p' c
#只输出被命令修改过的行
sed 's/test/trial/w test' c
#替换标记后会产生同同样的输出,不过将输出保存到指定的文件中,只有与命令模式匹配的行才会保存到文件中
- 替换字符
sed 's/\/bin\/bash/\/bin\/csh/' passwd
#将passwd文件中/bin/bash更改为/bin/cshsed 's!/bin/bash!/bin/csh!' passwd
#将passwd文件中/bin/bash更改为/bin/cshsed 's#/bin/bash#/bin/csh#' passwd
#将passwd文件中/bin/bash更改为/bin/csh
- 使用地址
sed '2s/pig/cat/' a
#将第二行中的pig更改为catsed '2,3s/pig/cat/' a
#将第二、三行中的pig更改为cat
sed '2,$s/pig/cat/' a
#将第二行开始到结尾的所有行中的pig更改为cat
组合命令,只改变第二行中的内容
组合命令,改变第三行到最后的内容
- 删除行
sed 'd' d
#删除所有的输出,并没有删除文件原有的内容
sed '2d' d
#删除第二行
sed '2,3d' d
#删除二三行
sed '3,$d' d
#删除第三行到最后所有的
sed '/line 1/d' d
#删除关键字line 1那一行的内容
- 插入附加文本
sed 'i\test line 1'
#在指定行前插入新的行sed 'a\test line 1'
#在指定行后追加新的行
在第一行之前插入多条内容
- 修改
修改第二行
关键字修改第一行
sed '2,3c the house is big.' file
#修改多行内容会将多行变为一行输出
sed 'y/123/qaz/' file
替换单个字符
- 转换命令是全局变量,会自动替换文本行中找到的指定字符的所有实例,而不会考虑出现的位置
sed 'p'
打印行
sed -n '/line 2/p' file
#禁止其他行,只打印包含匹配文本模式的行
sed '/line 2/p' file
#打印两遍匹配的行
sed '=' a
打印行号
sed '1,2w westos' file
#向文件中写入1,2行
sed '2r westos' a
#读取westos文件中的内容并插入到文件a中的第二行之后
sed '/line 2/r abcd' file
#将abcd文件中的内容插入到文件file的关键字line 2后面