27.sed

9.4/9.5 sed

 

9.4 sed:

 

sed支持grep的一些用法

但不会显示颜色

 

以下是介绍 p 的用法:

~1. sed ‘/root/'p test.txt

写法是这样的

并不会带颜色

并会把所有的都打印出来

~2. sed -n '/root/'p test.txt

加上-n就会只打印带root的行

~3. sed -n '/r.t/'p test.txt

同样支持 .

~4. sed -n '/r*t/'p tset.txt

同样支持*

~5. sed -nr ’/o+t/'p test.txt

-r不脱意的话,要加-r

同样支持+(一次和多次)

~6. sed -nr '/o{2}/'p test.txt

-r不加脱意符的话,要加-r

同样支持{},o出现2次

~7. sed -nr '/root|bus/'p test.txt

-r不加脱意符的话,要加-r

同样支持|,root和bus

~8. sed -n '2'p test.txt

'2'p只列出第二行

‘2,5’p列出2-5行

‘2,$'p列出25-末行。$表示末行

~9. sed -e '1'p -e '/bus/'p -n test.txt

运行多条命令

可多次使用-e。结尾不要忘记加-n,否则会列出所有

~10. sed -n '/bus/'Ip test.txt

I(大写I)类似于grep的-i。不区分大小写

实例:

1.

[root@afeilinux-01 sed]# sed '/root/'p test.txt 会列出文件所有,root项会打印两行。并且不会有颜色

aaaaaaa
root
root
bbbb
cc
cbvn
ffgh
ddfg
ddvc
aaa
root
root
root
root
rrot
root
root

--

-

2.

[root@afeilinux-01 sed]# sed -n '/root/'p test.txt 只打印关键词的搜索项

root
root
root
root

3.

[root@afeilinux-01 sed]# sed -n '/r.t/'p test.txt 支持 . 一个任意字符

rrot

4.

[root@afeilinux-01 sed]# sed -n '/r*t/'p test.txt 支持 * 任意个字符

root
root
root
rrot
root

--

-

5.

[root@afeilinux-01 sed]# sed -nr '/o+t/'p test.txt 需要加-r。支持 + 一次或多次个任意字符

root
root
root
rrot
root

6.

[root@afeilinux-01 sed]# sed -nr '/o{2}/'p test.txt 需要加-r。支持{}的用法,前面字符的2次出现?

root
root
root
root

--

-

[root@afeilinux-01 sed]# sed -nr '/root|bus/'p test.txt 需要加-r。支持|的用法,root和bus

root
bus
bus
bus
root
bus
root

 

8.

[root@afeilinux-01 sed]# sed -n '2'p test.txt 只列出第二行

root

[root@afeilinux-01 sed]# sed -n '2,5'p test.txt 列出2-5行

root
bus
cc
bus

[root@afeilinux-01 sed]# sed -n '28,$'p test.txt

dddd
dddd
dddd
ddd

dddd


dddddd

ddddd

ddddd




dddddd



ddddd
root

 

9.

[root@afeilinux-01 sed]# sed -e '1'p -e '/bus/'p -n test.txt 记得末尾加-n

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

dbus:x:81:81:System message bus:/:/sbin/nologin

 

10.

[root@afeilinux-01 sed]# sed -n '/bus/'Ip test.txt 加I(大写I),不区分大小写

bus
bus
bus
BUS

 

----------------------------------------------------------------------------------------------------------------------------------------------------

 

9.5sed:

 

以下介绍 sed其他的用法

 

~1. sed '1,25'd test.txt

将单引号后面的 p ,换成 d 即可删除1-10行

仅仅只是在屏幕里删除1-25行,实际的文件并没有删除

~2. sed -i '1,25'd test.txt

-i 将文件实际删除。 与不加-i的区别

’/user2/'d 也可删除user2所在的行

~3. sed ‘1,10s/ro/wx/g' test.txt

替换。单引号最后一个字符 g 代表全局替换

1-10行将ro替换成wx

也可以在正则表达式里全局替换

sed -r '1,10s/ro+/wx/g' test.txt 但是要加 -r(非脱意符的情况下)

1-10行,ro开头的一个或多个字符,全局替换成wx

~4. sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' 意思为:

像这种的字符串 root:x:0:0:root:/root:/bin/bash ,前后两个相互交换一下

 

([^:]+)表示单独指以非:开头的一个或多个字符。()作为区分,单独指这一种字符。后面的:代表以:作为间隔的

(.*) 表示贪婪匹配,一直匹配到最后。后面的:也是代表的以:作为间隔的

([^:]+)表示最后一个字符,以非:开头的一个或多个字符。()作为区分,单独指这一种字符

\3:\2:\1分别代表前三个以:间隔并以()作为区分的字符。需要这样写来,表示命令后的一种排序方式。也就是说,3代表绿色的,1代表蓝色的,让他以123这种方式来排序。已达到前后两个字符调换的结果

~5. sed 's/\/bin\/bash/wx/g' test.txt

当我们需要替换的字符带有/的时候,我们要在该字符本身的/前面加脱意符\

~6. sed 's/[a-zA-Z]//g' test.txt

将数字全部删除,直接替换为空就可以

~7. sed -r 's/(.*)/wx:&/' test.txt

将所有的行前面加上wx:

&代表所有在前面替换

实例:

1.

[root@afeilinux-01 sed]# sed '1,25'd test.txt p换d,删除1-25行。实际的文件并没有删除

dddd
dddd
dddd
dddd
dddd
ddd

dddd


dddddd

ddddd

ddddd




dddddd



ddddd
root

 

2.

[root@afeilinux-01 sed]# sed -i '1,25'd test.txt 加-i选项,将实际的文件删除设定的行段

[root@afeilinux-01 sed]# wc -l !$ wc -l 可以看一下

 wc -l test.txt
25 test.txt

 

3.

[root@afeilinux-01 sed]# sed '1,10s/ro/wx/g' test.txt |head 前十行ro替换成了wx

wxot
wxot
wxot
wxot
wxot
wxot
wxot
wxot
wxot
wxot

[root@afeilinux-01 sed]# sed -r '1,10s/d+/wx/g' test.txt |head 前十行d开头的一个或多个字符,替换成了wx,加-r

wx
wx
wx
wx
wx
wx
wx
wx
wx
wx

 

4.

[root@afeilinux-01 sed]# head test.txt 我们先head一下

dddddd
ddd
ddd
dddd
dddd
dddd
dddd
dddd
dddd
dddd

sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' 意思为:

像这种的字符串 root:x:0:0:root:/root:/bin/bash ,前后两个相互交换一下

[root@afeilinux-01 sed]# head test.txt | sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' 上下对比一下,发现已成功调换

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

41234123:rnjo:241

asda:r3o:asdas

/sbin/NOLogin:x:1:1:bin:/bin:dadain

daem:x:2:2:daemon

reqreqw:r4134o:dfasd

sdasdas:rgo:

/sbin/nologin:/sbin:on

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

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

 

5.

sed 's/\/bin\/bash/wx/g' test.txt

当我们需要替换的字符带有/的时候,我们要在该字符本身的/前面加脱意符\

[root@afeilinux-01 sed]# head test.txt | sed 's/\/bin\/bash/wx/g' 脱意符要加在需要脱意字符的前面,别忘了加g

root:x:0:0:root:/root:wx

241:rnjo:41234123

asdas:r3o:asda

dadain:x:1:1:bin:/bin:/sbin/NOLogin

daemon:x:2:2:daem

dfasd:r4134o:reqreqw

sdasdas:rgo:

on:/sbin:/sbin/nologin

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

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

 

6.

sed 's/[a-zA-Z]//g' test.txt

将数字全部删除,直接替换为空就可以

[root@afeilinux-01 sed]# head test.txt |sed 's/[a-zA-Z]//g' ?

::0:0::/://

241::41234123

:3:

::1:1::/://

::2:2:

:4134:

::

:/://

::3:4:://://

::4:7::///://

 

7.

[root@afeilinux-01 sed]# head test.txt |sed -r 's/(.*)/wx:&/' &代表所有前面替换

wx:dddddd
wx:ddd
wx:ddd
wx:dddd
wx:dddd
wx:dddd
wx:dddd
wx:dddd
wx:dddd
wx:dddd

 

转载于:https://my.oschina.net/u/3866192/blog/3099173

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值