sed 流编辑命令

Posted joe.chu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sed 流编辑命令相关的知识,希望对你有一定的参考价值。

1.命令功能

sed非交互式的流编辑器,sed不会修改源文件内容,除非重定向来保存输出结果;默认情况下所有的输出行都将被打印到屏幕上。

2.语法格式

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

sed  选项     ‘操作命令’ 输入文本

sed 常用选项说明

选项

功能

-n

安静模式,只输出被sed处理的行

-f

指定一个sed脚本文件到命令行执行

-r

sed使用扩展正则

-i

直接修改文件读取的内容,不在屏幕上输出

 

sed操作命令

sed命令

功能

a\

在当前行后添加一行或多行文本

i\

在当前行插入文本

q

结束或退出sed

r

从文件中读取输入行

c\

用文本替换或修改选中的行

d

删除行

h[H]

复制[追加]模式空间中的内容到缓存区

g

将缓存区的内容,复制到模式空间,覆盖该处原有的内容

G

将缓存区的内容,复制到模式空间,追加在原有内容后面

p

打印行

替换标志

s/regexp/replacement/

将regexp内容替换成replacement

g

在行内全局替换

p

打印行

w

将行写入文件

x

交换暂存缓冲区与模式空间的内容

y | y/source/dest/

将字符转换成另一个字符(不能对正则表达式使用y命令)

 

3.使用范例

示例1 p命令,打印包含root的行

[[email protected] ~]# sed ‘/root/p‘ test.txt       

root:x:0:0:root:/root:/bin/bash

root:x:0:0:root:/root:/bin/bash        #打印内容

bin:x:1:1:bin:/bin:/sbin/nologin

示例 2 n安静模式,只打印包含root的行

[[email protected] ~]# sed -n ‘/root/p‘ test.txt

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

示例3 d删除命令,删除行

[[email protected] ~]# cat -n test.txt

     1  root:x:0:0:root:/root:/bin/bash

     2  bin:x:1:1:bin:/bin:/sbin/nologin

     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin

     4  adm:x:3:4:adm:/var/adm:/sbin/nologin

     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

     6  sync:x:5:0:sync:/sbin:/bin/sync

     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

     8  halt:x:7:0:halt:/sbin:/sbin/halt

[[email protected] ~]# sed ‘3d‘ test.txt   #第三行“daemon:x:2:2:daemon:/sbin:/sbin/nologin”被删除

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin

删除第1行到第3行

[[email protected] ~]# sed ‘1,3d‘ test.txt 

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

sync:x:5:0:sync:/sbin:/bin/sync

删除包含root的行

[[email protected] ~]# sed ‘/root/d‘ test.txt    #删除包含root的行

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

示例4 替换:s命令

全局nologin替换成no

[[email protected] ~]# sed ‘s/nologin/no/g‘ test.txt   #s表示替换,g表示全局

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/no

daemon:x:2:2:daemon:/sbin:/sbin/no

adm:x:3:4:adm:/var/adm:/sbin/no

lp:x:4:7:lp:/var/spool/lpd:/sbin/no

注:如果没有g,只会替换每一行的第一个nologin。

以上是关于sed 流编辑命令的主要内容,如果未能解决你的问题,请参考以下文章

sed 流编辑命令

sed 一 流编辑

Sed编辑器

sed:轻量级流编辑器

第十八章 文本处理流编辑器:sed命令

sed编辑器