码迷,mamicode.com
首页 > 系统相关 > 详细

Linux sed命令详解

时间:2020-01-02 13:07:52      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:地址   image   用法   sub   pre   增删改   排除   高级用法   com   

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\n22222 ' sed.txt 
101,oldboy,CEO
11111                       注:\n表示回车
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\n\noldboy\n    \n  lidao\n \nalex  \n\noldbey' >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命令详解

标签:地址   image   用法   sub   pre   增删改   排除   高级用法   com   

原文地址:https://www.cnblogs.com/jacqueline95/p/12132331.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!