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/csh -
sed 's!/bin/bash!/bin/csh!' passwd#将passwd文件中/bin/bash更改为/bin/csh -
sed 's#/bin/bash#/bin/csh#' passwd#将passwd文件中/bin/bash更改为/bin/csh
- 使用地址
-
sed '2s/pig/cat/' a#将第二行中的pig更改为cat -
sed '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后面