https://blog.csdn.net/xhoufei2010/article/details/53521625?t=1482769628409
简介
sed 是一种在线编辑器,它一次处理一行内容。
处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space)。
接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。
Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
sed 用法
利用sed命令,删除一个文件中,含有特定字符的文件。
1、删除file文件中含有abc字符串的行:
sed '/abc/d' file
如果需要将删除的结果输出到指定文件,直接重定向到文件就可以了
sed '/abc/d' file > output_file
2、删除file文件中,含有特殊字符的行,如左斜线“/”
这个时候,需要用双引号作为sed的操作指令。
如删除file文件中,含有“a/b/Makefile:106:”字符串的行。
sed "/a\/b\/Makefile:106: warning:/d" file
对于a\/b中,右划线“\"为转义字符,"\/"代表转义之后,为一个“/”字符。
所以,“/a\/b\/Makefile:106:”,经过转义之后,实为“a/b/Makefile:106:”
仅删除行末的/时,需要额外处理,添加行结束符 \r 做约束:
sed -i "s/.html\/\r/.html/g" filename # 去掉 .html 类型url末尾误添加的斜杆 /
sed -i "s/.txt\/\r/.txt/g" filename # 去掉 .txt 类型url末尾误添加的斜杆 /
3、实例
#cat source_file.txt
test for sed
a/b/Makefile:106: warning:11111
line3
a/b/Makefile:106: warning:222222
line5
输入sed命令,进行删除掉含有“a/b/Makefile:106:”字符串的行。
#sed "/a\/b\/Makefile:106: warning:/d" source_file.txt
test for sed
line3
line5
如果需要将结果保存到文件,直接加一个重定向即可。
sed "/a\/b\/Makefile:106: warning:/d" source_file.txt > output.txt