sed 非交互式流编辑器

1.默认情况sed不会改变原文件,处理文本时以行为单位,每处理一行就打印出来,然后再处理下一行,直到文件结束
2.编辑动作:删除、查找替换、添加、插入、从其他文件读入数据
3.要保存修改后的文件,使用重定向
4.直接修改源文件本身,使用-i参数
5.使用场景:常规编辑器编辑困难的文件、过于庞大的文件、有规律的文本修改(几百兆的文件),加快处理速度(全文替换)
6.sed [options] 'commands' 文件
options 可接受的参数
commands sed命令集(25个)

commands

1.-e 和分号连接多编辑命令(一般情况可忽略)

sed -e 's/this/That/g' -e 's/line/LINE/g' sed.txt
sed 's/this/That/g ; s/line/LINE/g' sed.txt
文本处理工具sed awk_第1张图片

2.d删除指定的行

文本处理工具sed awk_第2张图片

补充:如果希望保存修改后的文件 使用重定向 sed -i '1d' sed.txt > sed1.txt

3.查找替换

s命令可将查找到的匹配文本替换为新的文本,默认情况只替换第一次匹配到的内容,命令g完成所有匹配值的替换
sed 's/line/LINE/'
sed 's/line/LINE/g'

字符转换y

将一系列字符逐个变换为另外一系列字符
文本处理工具sed awk_第3张图片

插入文本a/i

使用i在第二行之前插入insert
sed '2 i insert' sed.txt
使用i在第二行之后插入insert
sed '2 a insert' sed.txt

读入文本r

从其他文本读入文本 并插入匹配行之后

sed '/^$/r /etc/passwd' sed.txt (插入到空白行之后)

打印p

文本处理工具sed awk_第4张图片

写文件

默认不改写源文件,只对缓冲区文件做修改并修改到屏幕,如果要保存文件,(除重定向或-i参数)。使用w命令保存到外部文件

sed -n '1,2 w output' sed.txt (output文件前两行是sed前两行的内容)

sed脚本

1.替换this为THAT,并删除空白行
sed.rules
s/this/THAT/g
/^$/d
2.-f参数指定改脚本应用于sed.txt
3.sed -f sed.rules sed.txt