语法
man sed

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

OPTION

-n, --quiet, --silent 取消默认输出,只显示script处理后的结果

-e script, --expression=script  以指定的script来执行

-f script-file, --file=script-file 以指定的script文件来执行

-i [SUFFIX], --in-place[=SUFFIX] 编辑原始文件  慎用

 

If no -e, --expression, -f, or --file option is given, then the first non-option argument 
is taken as the sed script to interpret.  All remaining arguments are names of input files; 
if no input files are specified, then the standard input is read
     

命令简介


a  # append ,新增,在指定行的下面
i  # insert ,新增,在指定行的上面  
d  # delete 删除指定行

# 注意非g结尾,最后/不要忘了
s/regexp/replacement/  # 替换 比如1,20s/regexp/replacement/g 

demo

原始文件

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
myroot:x:0:0:myroot:/myroot:/bin/bash

替换类

# 把全部的root替换成admin
sed s/root/admin/g mypasswd

nl -n ln mypasswd |sed s/admin/root/g

# 匹配行第3个的root替换成admin
cat mypasswd |sed s/root/admin/3

# 匹配行的第一个root替换成admin
cat mypasswd |sed s/root/admin/

# 匹配行会打印 1条匹配的记录会打印2次
cat mypasswd |sed s/root/admin/p

# 把匹配的内容,保存到当前目类下的pas1文件中 w另存为
cat mypasswd |sed -n 's/root/admin/gw pas1'

# 每行都注释 # 
sed 's/^/#/' pas1

# 删掉文件中的第1个字符
sed 's/^.//1' pas1

# 删掉文件中的第2个字符
sed 's/.//2' pas1

插入类 

# 第一行 插入 ------begin--------
# 这是第一行之前,也就是真正的第一行
cat mypasswd |sed '1i ------begin--------'

 

# 最后1行之后 插入------the end--------
# 最后1行之后
cat mypasswd |sed '$a ------the end--------'

删除类

# 删除第1行
nl mypasswd |sed 1d

删除2-5行
nl mypasswd |sed 2,5d

打印

# 打印2-5行  如果不加-n,则2-5行会打印2遍
sed -n '2,5p' mypasswd

# 打印第1行
sed -n '1p' mypasswd

# 打印最后1行
sed -n '$ p' mypasswd

# 打印奇数行
sed -n '1~2 p' mypasswd

# 打印偶数行
sed -n '0~2 p' mypasswd

# 显示最后一行行数(某个文件总行数) 和 wc -l 功能一样
sed -n '$=' mypasswd