sed 命令介绍

目录

命令

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

问题(你只要弄懂下面这些问题将会对 sed 的高级部分有更多的了解)

sed 如何删除文件里的内容?

sed -i -n '' fileName

sed 如何删除空行的上一行?

sed  'N;/\n$/!P;D' fileName

sed 如何将文件中的小写转换为大写?

sed  's/[a-z]/\u&/g' fileName

sed 如何给每一行后面添加一个空行?

sed 'G' fileName

sed 如何删除匹配行和下一行的内容?

sed '/someting/,+1d' filename

sed 如何倒序输入文件内容?

sed '1!G;h;$p' fileName
sed '1!G;h;$!d' fileName

sed 如何把上下两行合并为一行?

sed 'N;s/\n/ /' fileName

sed 如何把整个文章合并为一行(即删除换行符)?

sed ':a;N;s/\n//g;ta' fileName

目录