1.介绍

sed工具可以对数据进行增、删、替换、筛选显示等操作。本文仅罗列部分常用的选项。sed一般用法是:sed -选项 'XXX参数 内容',要注意区分选项和单引号内的参数。

2. 使用例子

2.1 删除之后显示

d选项顾名思义就是delete的意思

#删除某个文件的2,3行并且显示其他的行
nl /etc/passwd | sed '2,3d'

2.2 在某几行末尾加上内容

a选项即add的意思

#在2,3行后面加上Kami Wan
nl /etc/passwd | sed '2,3a Kami Wan'

#使用\符号可以将内容换行,输入\后按下回车键输入新行的内容
nl /etc/passwd | sed '2,3a Kami \
>Wan'

2.3 在某几行前面加上内容

i即insert的意思

#在2,3行后面加上Kami Wan
nl /etc/passwd | sed '2,3i Kami Wan'

#使用\符号可以将内容换行
nl /etc/passwd | sed '2,3i Kami \
>Wan'

2.4 以行为单位的替换功能

c代表change,这里将1到5行所有的内容全部改成一行内容Kami Wan

nl /etc/passwd|sed '1,5c Kami Wan'

如果需要再

2.5 撷(xie)取出指定行

p代表paragraph,段落,这里引申为多行的撷取.
这里的n我理解为not included,即为不包括,如果不加-n,其余内容包括5,7行在内的还会再次输出,这样不仅内容重复,还多了许多我们不需要的信息。

nl /etc/passwd|sed -n '5,7p'

2.6 部分数据的搜寻和取代

搜寻与取代的格式如下:注意//表示用null去替换

#将/etc/ssh/sshd_config中的注释文字全部去掉显示,利用正则
cat /etc/ssh/sshd_config | sed 's/^#.*$//g'| sed '/^$/d'
#也可以采用grep -v的反向匹配再配合删除空行来达到
cat /etc/ssh/sshd_config | grep -v '#' | sed '/^$/d'

#将密码文件的3,6行后面分别添加一些字符
nl /etc/passwd|sed -n '3,6p'|sed 's/$/ Kami Wan/g'

3. 直接使用在文件上

sed也可以直接对文件应用,这时候会改变文件本身的内容,需要注意。