码迷,mamicode.com
首页 > 其他好文 > 详细

sed 流编辑命令

时间:2018-05-04 01:43:54      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:正则表达   txt   add   source   oca   cells   idt   style   roo   

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的行

[root@localhost ~]# 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的行

[root@localhost ~]# sed -n ‘/root/p‘ test.txt

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

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

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

[root@localhost ~]# 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

[root@localhost ~]# 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行

[root@localhost ~]# 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的行

[root@localhost ~]# 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

[root@localhost ~]# 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 流编辑命令

标签:正则表达   txt   add   source   oca   cells   idt   style   roo   

原文地址:https://www.cnblogs.com/joechu/p/8988115.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!