sed命令详解2

1 删除行

类同与前面介绍的替换参数s,这里使用的参数是d(delete),前面指定删除的行的位置即可

//单行删除命令

root@jiangjian-K42JZ:/home/jiangjian/sh# cat data
this is a test of the test script
this is the second test of the test script
this is a different line
root@jiangjian-K42JZ:/home/jiangjian/sh# sed '1d' data
this is the second test of the test script
this is a different line
root@jiangjian-K42JZ:/home/jiangjian/sh#

//多行删除命令

root@jiangjian-K42JZ:/home/jiangjian/sh# cat data
this is a test of the test script
this is the second test of the test script
this is a different line
root@jiangjian-K42JZ:/home/jiangjian/sh# sed '2,3d' data
this is a test of the test script
root@jiangjian-K42JZ:/home/jiangjian/sh#  


sed编辑器的模式匹配功能也使用于删除命令

$sed '/number 1 /d'  data6

This is line number 2

This is line number3

还可以使用两个文本模式删除若干行,但这样做是必须要小心,指定的第一个模式将"打开"行删除,而第二个将关闭行删除。sed编辑器将删除指定的这两行(包括指定的行)的之间的所有文本行:

root@jiangjian-K42JZ:/home/jiangjian/sh# cat data6
This is line 1
THis is line 2
This is line 3
This is line 4
root@jiangjian-K42JZ:/home/jiangjian/sh# sed '/1/,/3/d' data6
This is line 4
root@jiangjian-K42JZ:/home/jiangjian/sh#

2 插入和附加文本

插入命令(i)在指定行之前添加新的一行;

附加命令(a)在指定的行后面添加新的一行

关于这两个命令,容易混淆的是他们的格式,不能在单命令行上面使用这两个命令,必须单独指定要插入或附加的行。实现这一功能的格式为:

sed  '[ address]  command \

new line  '

root@jiangjian-K42JZ:/home/jiangjian/sh# cat data6
This is line 1
THis is line 2
This is line 3
This is line 4
root@jiangjian-K42JZ:/home/jiangjian/sh# sed  '1i\
> This is line 0' data6
This is line 0
This is line 1
THis is line 2
This is line 3
This is line 4
root@jiangjian-K42JZ:/home/jiangjian/sh#



root@jiangjian-K42JZ:/home/jiangjian/sh# cat data6
This is line 1
THis is line 2
This is line 3
This is line 4
root@jiangjian-K42JZ:/home/jiangjian/sh# sed '4a\
> This is line 5' data6
This is line 1
THis is line 2
This is line 3
This is line 4
This is line 5
root@jiangjian-K42JZ:/home/jiangjian/sh#


3 更改行

使用参数c(change),格式同添加和插入一致

root@jiangjian-K42JZ:/home/jiangjian/sh# cat data6
This is line 1
THis is line 2
This is line 3
This is line 4
root@jiangjian-K42JZ:/home/jiangjian/sh# sed '1c\
> This is line 1st' data6
This is line 1st
THis is line 2
This is line 3
This is line 4
root@jiangjian-K42JZ:/home/jiangjian/sh#


4 变换命令

格式:  [address ]y /inchars/outchars/

使用的是一对一的变换

root@jiangjian-K42JZ:/home/jiangjian/sh# cat data6
This is line 1
THis is line 2
This is line 3
This is line 4
root@jiangjian-K42JZ:/home/jiangjian/sh# sed 'y/1234/5678/' data6
This is line 5
THis is line 6
This is line 7
This is line 8

5 打印命令

打印文本行的小写p命令

root@jiangjian-K42JZ:/home/jiangjian/sh# echo "This is a test " |sed 'p'
This is a test
This is a test
root@jiangjian-K42JZ:/home/jiangjian/sh#


打印行号的等号(=)命令

root@jiangjian-K42JZ:/home/jiangjian/sh# sed '=' data6
1
This is line 1
2
THis is line 2
3
This is line 3
4
This is line 4
root@jiangjian-K42JZ:/home/jiangjian/sh#


列出行的l(小写的L)命令

root@jiangjian-K42JZ:/home/jiangjian/sh# sed 'l' data6
This is line 1$
This is line 1
THis is line 2$
THis is line 2
This is line 3$
This is line 3
This is line 4$
This is line 4
root@jiangjian-K42JZ:/home/jiangjian/sh# 



6从文件当中读取数据

[address]r file name

root@jiangjian-K42JZ:/home/jiangjian/sh# cat data
this is a test of the test script
this is the second test of the test script
this is a different line
root@jiangjian-K42JZ:/home/jiangjian/sh# cat data6
This is line 1
THis is line 2
This is line 3
This is line 4
root@jiangjian-K42JZ:/home/jiangjian/sh# sed '3r data' data6
This is line 1
THis is line 2
This is line 3
this is a test of the test script
this is the second test of the test script
this is a different line
This is line 4
root@jiangjian-K42JZ:/home/jiangjian/sh#




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值