01-Sed简介
1 Sed简介
Sed(Stream EDitor)为Uninx系统上提供将编辑工作自动化的编辑器,使用者无需直接编辑数据。使用者可以利用Sed所提供的20多种不同的函数,进行不同的编辑动作。
Sed是以行为单位编辑文件,所以也称为行编辑器(Line editor)。
1.1 什么时候需要使用Sed
- 在修改文档时,需要重复进行的动作,可以使用Sed进行编辑。比如统一修改人名等。
- 一个文档需要多个不同操作的动作,可以用Sed一次执行。比如:Sed可以一次执行文档中的空白行删除、替换字符串、在第几行添加内容等。
1.2 Sed 所能做的编辑动作
- delete--删除
- change--改变
- append--添加
- insert--插入
- 合并
- 交换文件中的数据行
- 读入其他文件的数据到当前文件中
- substuite--替换
- 转换其中的字母
- .....
1.3 Sed 工作过程
如同其他Unix命令,Sed由标准输入读入编辑文件并由标准输出送出结果。
- 1.Read a line from input stream
- 2.Excute sed commands on a line
- 3.Display result on output stream
read -- Sed从输入流(文件、管道或者标准输入)读取一行并将其存储在其内部缓冲区中,该内部缓冲区称为模式缓冲区。
execute -- 将所有Sed命令顺序应用到模式缓冲区中。
display -- 将(已经修改的内容)发送到输出流。发送数据后,模式缓冲区将清空。
1.3.1 Sed 工作流程示例
//展示test.txt文件的内容,效果类似于cat命令
sed '' test.txt
/*
在上面这句话中,test.txt是输入的文件名,之前的单引号表示Sed命令。
*/
上面这句话的运行流程:
首先,sed从输入文件test.txt中读取一行,并将其存储在模式缓冲区中
然后,将sed命令应用于模式缓冲区。在上面的示例中没有sed命令,因此对于模式缓冲区不执行任何操作。
最后,删除并在标准输出上打印模式缓冲区的内容。
sed ''
Hello Word
Hello Word
如果没有文件输入,那么sed会接受命令行的标准输入,然后用命令进行处理,之后进行输出。退出局Sed回话模式,使用ctrl+D键。