G
把暂存缓冲区的内容追加到模式空间里,追加在原有内容的后面
p
打印当前模式空间内容,追加到默认输出之后
n
读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理
q
结束或退出sed
r
从文件中读取输入行
!
对所选行以外的所有行应用命令
s
用一个字符串替换另一个
g
在行内进行全局替换:cat -n passwd.txt | sed 's@/bin/bash$@ /sbin/nologin@g'
w
将所选的行写入文件:sed '/^lixiaozi/w /app/lixiaozi.txt' passwd.txt
x
交换暂存缓冲区与模式空间的内容
y
将字符替换为另一字符(不能对正则表达式使用y命令)
3.2 sed选项
选项
功能
-e
进行多项编辑,即对输入行应用多条sed命令时使用
-n
取消默认的输出
-f
指定sed脚本的文件名
4.退出状态
sed不向grep一样,不管是否找到指定的模式,它的退出状态都是0。只有当命令存在语法错误时,sed的退出状态才不是0。
5.正则表达式元字符
与grep一样,sed也支持特殊元字符,来进行模式查找、替换。不同的是,sed使用的正则表达式是括在斜杠线"/"之间的模式。
如果要把正则表达式分隔符"/"改为另一个字符,比如o,只要在这个字符前加一个反斜线,在字符后跟上正则表达式,再跟上这个字符即可。例如:sed -n 'o^Myop' datafile
元字符
功能
示例
^
行首定位符
/^my/ 匹配所有以my开头的行
$
行尾定位符
/my$/ 匹配所有以my结尾的行
.
匹配除换行符以外的单个字符
/m..y/ 匹配包含字母m,后跟两个任意字符,再跟字母y的行
*
匹配零个或多个前导字符
/my*/ 匹配包含字母m,后跟零个或多个y字母的行
[]
匹配指定字符组内的任一字符
/[Mm]y/ 匹配包含My或my的行
[^]
匹配不在指定字符组内的任一字符
/[^Mm]y/ 匹配包含y,但y之前的那个字符不是M或m的行
(..)
保存已匹配的字符
1,20s/(you)self/1r/ 标记元字符之间的模式,并将其保存为标签1,之后可以使用1来引用它。最多可以定义9个标签,从左边开始编号,最左边的是第一个。此例中,对第1到第20行进行处理,you被保存为标签1,如果发现youself,则替换为your。










