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
