sed是stream editor流编辑器的简称。它每次都只处理文件中的一行,会把当前处理的行放在缓冲区中。接着用sed命令处理缓冲区中的内容,处理完之后输出在屏幕上。然后处理下一行,处理完之后也输出在屏幕上。sed的操作不会改变原文件中的内容,当然可以重定向的方式来接收经过sed处理后的文件。

以如下文件为例:文件名为student_info.txt

#!/bin/bash
#显示前三行的内容
head -n 3 ./student_info.txt

 

注:把sed的用法分为增删改查4中方式会好分类以及好记录一点

#对于文档内容的增加操作i,a(insert插入,add追加)
##对于第一行,第二行,第三行都后面都插入五个#####
sed '1,3i#####' student_info.txt    分别往第1,2,3行之前都插入了一行#####

 

##在第一行前面插入五个#####
sed '1i#####' student_info.txt    在第1行之前插入了#####

 

##在第一行后面追加五个#####
sed '1a#####' student_info.txt    当然也可以等价于在第二行前面插入了一行#####     sed '2i#####' student_info.txt

                                    

 

##在22所在的所有行之前插入五个#####
sed '/22/i#####' student_info.txt     注:/22/的意思是找到文件中所有有22个地方,这种方式要用两个反斜杠来过滤

 

#对于文档内容的删除操作d   delete删除操作
##对于第1-3行进行删除
sed '1,3d' student_info.txt

##对于22所在的行进行删除
sed '/22/d' student_info.txt

 

#对于文档内容进行行替换    change替换
##对于第1行替换为5个$$$$$
sed '1c$$$$$' student_info.txt

 


##对于以cc开头,行替换成$$$$$
sed '/^cc/c$$$$$' student_info.txt

 

#对于文档内容的查询    print打印
#仅仅打印出1-3行
sed -n '1,3p' student_info.txt


#除了1-3行其他的也都打印出来
sed '1,3p' student_info.txt

 


#打印出的1-5行另存在test.txt
sed '1,5w test.txt' student_info.txt

              

 

#对于文档内部行的复制和粘贴

#把第一行复制到最后一行
sed '1H;$G' student_info.txt

 

#对文档内进行单词替换
sed 's/22/sed/g' student_info.txt

 


#对文档内以81结尾的行进行单词替换
sed 's/81$/sed/g' student_info.txt

 sed 's/bb/sed/g' student_info.txt