【shell】强大的流编辑器sed用法

Date: 2018.7.4


1、参考:

http://man.linuxde.net/sed
https://www.cnblogs.com/ctaixw/p/5860221.html

2、sed用法总结

(1)命令格式

sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)

(2)选项
-e [scriptfile]或–expression= [scriptfile]:以选项中的指定的script来处理输入的文本文件;
-f [scriptfile]或–file=[scriptfile]:以选项中指定的script文件来处理输入的文本文件;
-h或–help:显示帮助;
-n或–quiet或——silent:仅显示script处理后的结果;
-V或–version:显示版本信息。
(3)sed命令

a 在当前行下面插入文本。(追加)
i 在当前行上面插入文本。
c 把选定的行改为新的文本。
d 删除,删除选择的行。
D 删除模板块的第一行。
s 替换指定字符
h 拷贝模板块的内容到内存中的缓冲区。
H 追加模板块的内容到内存中的缓冲区。
g 获得内存缓冲区的内容,并替代当前模板块中的文本。
G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
l 列表不能打印字符的清单。
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
p 打印模板块的行。
P(大写) 打印模板块的第一行。
q 退出Sed。
b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
r file 从file中读行。
t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
w file 写并追加模板块到file末尾。  
W file 写并追加模板块的第一行到file末尾。  
! 表示后面的命令对所有没有被选定的行发生作用。  
= 打印当前行号码。  
# 把注释扩展到下一个换行符以前。  

(4)替换功能

替换file文件中的字符串:

sed 's/book/books/' file

-n选项和p命令一起使用表示只打印那些发生替换的行:

sed -n 's/test/TEST/p' file

直接编辑文件选项-i,会匹配file文件中每一行的第一个book替换为books:

sed -i 's/book/books/g' file

全面替换标记: /g

sed 's/book/books/g' file

(5)删除操作

删除空白行:

sed '/^$/d' file

(6)其他功能命令:
r:读文件 w:写文件 a:追加 i:插入


sed的功能是很强大的,常用功能主要有上面这些,后续碰到新的功能再更新于此。

持续更新中。。。。。

原文地址:https://www.cnblogs.com/SoaringLee/p/10532423.html