Linux sed命令详解

Posted jacqueline95

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux sed命令详解相关的知识,希望对你有一定的参考价值。

Sed简介

sed作用:增删改查

  1. 增:a(小写) append 追加,后
  2. I(小写) insert 插入,前
  3. C(小写) change 替换,把这行的内容替换为你写的
  4. 删:d
  5. 改:s

sed执行思路

技术图片

sed 增删案列

实验环境

 cat sed.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
119,su,XO

文件末尾追加内容

题:在oldboy或Alex的行下面都增加12306,su,CTO  
[root@localhost /]# sed -r '/oldboy|Alex/a12306,su,CTO ' sed.txt 
101,oldboy,CEO
12306,su,CTO 
102,zhangyao,CTO

增加两行

[root@localhost /]# sed -r '/oldboy|Alex/a11111
22222 ' sed.txt 
101,oldboy,CEO
11111                       注:
表示回车
22222 
102,zhangyao,CTO

删除

  1. 题:删除从Alex到lidao的行
[root@localhost /]# sed -i '/Alex/,/lidao/d' sed.txt
  1. 题:删除1到3行
[root@localhost /]# sed -i '1,3d' sed.txt
  1. 题:删除第一行和第三行
[root@localhost /]# sed -i '1d;3d' sed.txt

sed面试题

3.1实验环境:echo -e 'oldboy

oldboy
    
  lidao
 
alex  

oldbey' >blank.txt
题:不显示文件中的空行:grep sed 
不显示文件中的空行(有的空行包含连续的空格)

3.2思路规律:
1.空行(纯粹空行) ^$ 
2.只有空格 或者多个空格
3.3解决方案:基础用法?egrep -v '^$|^ +$' blank.txt
                       sed -ri '/^$|^ +$/d' blank.txt
              高级用法? egrep  -v '^ *$' blank.txt
                         egrep -v '[^$| ]' blank.txt
             注: [^] 相当于-v; 排除,取反
                   ^ 在[ ]里是取反的意思

Sed 修改,替换案例

sed 修改(替换)
sed 's###g'
s == substitute  sub 替换 
g == global          全局 默认会替换第1个匹配的内容

实验环境

[root@localhost /]# cat aa.txt 
oldboy
alex
oldgirl

替换

  1. 题:用sed 把oldboy替换为oldgirl
[root@localhost ~]# sed -i 's#oldboy#oldgirl#g' /oldboy/aa.txt 
  1. 修改文件前先备份
sed -i.bak 's#oldboy#oldgirl#g' /oldboy/aa.txt
  1. sed后向应用
题:取出网卡ip地址
[root@localhost /]# ip a s eth0 |sed -rn '3s#inet(.*)/24.*#1#gp'
     10.0.0.200

sed 取行案列

实验环境:[root@localhost ~]# seq 40 > /oldboy/junjun.txt

用sed显示/oldboy/junjun.txt文件里的第三行

sed -n '3p' /oldboy/junjun.txt 

用sed显示文件的30到40行内容

sed -n '30,40p' /oldboy/junjun.txt 

显示包含5字符的行

[root@localhost oldboy]# sed -n '/5/p' junjun.txt 
5
15
25
35

显示包含33字符到36字符的行

[root@localhost oldboy]# sed -n '/33/,/36/p' junjun.txt 
33
34
35
36

以上是关于Linux sed命令详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习011sed命令详解

linux shell sed命令的问题!

linux之sed命令详解

linux sed命令参数及用法详解

linux sed命令详解(转)

linux下sed命令详解