怎么在linux终端上sed,linux上sed的详解

语法:

sed [options] '{command}[flags]' [filename]

-e script 将脚本中指定的命令添加到处理输入时执行的命令中  多条件,一行中要有多个操作

-f script 将文件中指定的命令添加到处理输入时执行的命令中

-n        抑制自动输出

-i        编辑文件内容

-i.bak    修改时同时创建.bak备份文件。

-r        使用扩展的正则表达式

!         取反 (跟在模式条件后与shell有所区别)

q         退出                           w 另存

r filename读取文件  R 读取一行

保持前面匹配的内容 (与正则分组类似)

sed常用内部命令

a   在匹配后面添加

i   在匹配前面添加

p   打印

d   删除

s   查找替换

c   更改

y   转换   N D P

/s replace替换

例子:(例子很简单,帮助互理解)

1. /s 例子:

[root@wangjianxiong ~]# echo "da xiong" |sed 's/da/xiao/'

xiao xiong

2. 在命令行中使用多个命令 -e 的例子

[root@wangjianxiong ~]# echo "da xiong" |sed -e 's/da/xiao/;s/xiong/mao/'

xiao mao

3. -f script 将文件中指定的命令添加到处理输入时执行的命令中(和-e差不多)

[root@wangjianxiong ~]# cat a

s/da/xiao/

s/xiong/mao/

[root@wangjianxiong ~]# echo "da xiong" | sed -f a

xiao mao

4. -n显示某行

sed -n '1p'      filename             #显示第一行

sed -n '$p'      filename             #显示最后一行

sed -n '1,2p'   filename             #显示第一行到第二行

sed -n '2,$p'   filename             #显示第二行到最后一行

[root@wangjianxiong ~]# cat b

a

b

c

d

e

[root@wangjianxiong ~]# sed -n '1p' b

a

[root@wangjianxiong ~]# sed -n '$p' b

e

[root@wangjianxiong ~]# sed -n '1,2p' b

a

b

[root@wangjianxiong ~]# sed -n '2,$p' b

b

c

d

e

5. y 转换为大写

[root@wangjianxiong ~]# sed '1,3y/abc/ABC/' b

A

B

C

d

e

6. g:表示用新文本替换现有文本的全部实例;p:表示打印原始的内容;w file:将替换的结果写入文件

[root@wangjianxiong ~]# cat c

a.a

b.b

c.c

d.d

e.e

[root@wangjianxiong ~]# sed 's/a/A/1' c

A.a

b.b

c.c

d.d

e.e

[root@wangjianxiong ~]# sed 's/a/A/g' c

A.A

b.b

c.c

d.d

e.e

[root@wangjianxiong ~]# sed '2{s/b/daxiong/;s/b/daxiong/}' c

a.a

daxiong.daxiong

c.c

d.d

e.e

[root@wangjianxiong ~]# sed '2{s/b/daxiong/}' c

a.a

daxiong.b

c.c

d.d

e.e

[root@wangjianxiong ~]# sed 's/a/A/w test' c

A.a

b.b

c.c

d.d

e.e

[root@wangjianxiong ~]# cat test

A.a

[root@wangjianxiong ~]#  echo "this is a test" | sed p

this is a test

this is a test

7.  d   删除

[root@wangjianxiong ~]# sed 2d c

a.a

c.c

d.d

e.e

8.  a   在匹配后面添加;i   在匹配前面添加;c 更改

[root@wangjianxiong ~]# sed '3i\daxiong' c

a.a

b.b

daxiong

c.c

d.d

e.e

[root@wangjianxiong ~]# sed '3a\daxiong' c

a.a

b.b

c.c

daxiong

d.d

e.e

[root@wangjianxiong ~]# sed '3c\daxiong' c

a.a

b.b

daxiong

d.d

e.e

9. 显示行号 ; 统计有多少行

[root@wangjianxiong ~]# sed '=' c

1

a.a

2

b.b

3

c.c

4

d.d

5

e.e

[root@wangjianxiong ~]# sed -n "$=" c

5

10. -i 编辑文件内容

[root@wangjianxiong ~]# cat e

;www.baidu.com IN A 192.168.1.1

www.baidu.com IN A 192.168.1.2

www.baidu.com IN A 192.168.1.3

www.baidu.com IN A 192.168.1.4

[root@wangjianxiong ~]# sed -i 's/192/193/g'  e

[root@wangjianxiong ~]# cat e

;www.baidu.com IN A 193.168.1.1

www.baidu.com IN A 193.168.1.2

www.baidu.com IN A 193.168.1.3

www.baidu.com IN A 193.168.1.4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值