sed用法

1. sed简介


sed是一个管道命令,主要功能有将数据进行替换,删除,新增, 选取特定行等功能。

2. sed用法


sed  [-nefr] [动作]
参数
-n 使用silent安静模式,sed一般会将所有数据输出,使用-n,只输出sed有修改的行。
-e 直接在命令行模式上进行sed操作
-f  将sed的动作写入文件, -f filename 从文件中读取动作。
-r  使用扩展正则表达式,默认为基础正则表达式
-i   直接修改文件内容,而不是屏幕输出。

动作说明:
[n1[,n2]]function 
n1,n2表示操作的行数,
function :
a  新增
c  整行替换
d  删除
i   插入
p  打印
s  替换,如 1,20s/old/new/g  将1-20行中的old替换为new。

3. 使用举例


3.1 删除行


删除文件的2-5行
$ nl pass |sed '2,5d'   
     1  root:x:0:0:root:/root:/bin/bash
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
只删除第2行
$ nl pass |sed '2d' 
     1  root:x:0:0:root:/root:/bin/bash
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
删除从3到结尾,$表示文件最后一行
$ nl pass |sed '3,$d' 
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin

3.2 新增行


新增一行
$ nl pass |sed '2,4a hello world'
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
hello world
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
hello world
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
hello world
     5  lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
想插入多行使用 \,
$ nl pass |sed '2a hello world ...\   
hahah'
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/sbin/nologin
hello world ...
hahah
     3  daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4  adm:x:3:4:adm:/var/adm:/sbin/nologin
想在当前行之前插入,将上面的a替换成i。
$ nl pass |sed '2i hello world'    
     1  root:x:0:0:root:/root:/bin/bash
hello world
     2  bin:x:1:1:bin:/bin:/sbin/nologin

3.3 替换行


替换2-5行
$ nl pass |sed '2,5c hello world' 
     1  root:x:0:0:root:/root:/bin/bash
hello world
     6  sync:x:5:0:sync:/sbin:/bin/sync

3.4 打印行


打印出2-5行
可以使用  head -n 5 |tail -n 4,
现在可用sed ,使用-n
$ nl pass |sed -n '2,5p'
     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

3.5 字符串替换


将password的:替换为--
]$ nl pass | sed 's/:/--/g'   
     1  root--x--0--0--root--/root--/bin/bash
     2  bin--x--1--1--bin--/bin--/sbin/nologin
替换支持正则表达式
将结尾bash替换!
$ nl pass | sed 's/bash$/!!/g'
     1  root:x:0:0:root:/root:/bin/!!
     2  bin:x:1:1:bin:/bin:/sbin/nologin

sed使用-i直接修改文件,不用输出
$ sed -i 's/bash$/bash shell/g' pass 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值