ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux三剑客之一sed

2021-12-21 20:03:46  阅读:184  来源: 互联网

标签:定位 文本 待处理 模式 sed Linux txt 三剑客


sed

 

定义

  流媒体编辑器(修改文本)

 

格式

  sed [参数] '处理规则' [操作对象]

    处理规则:正则

 

参数

  -e :允许多项编辑

    每多编辑一行在那行操作前加一个-e

    也就是说 编辑多少行就有多少个-e

  -n :取消默认输出

  -i  :就地编辑(实时编辑直接生成结果)

  -r  :支持拓展正则(就是自定义正则)

  -f  :指定sed匹配规则文件

 

定位(锁定文本位置)

  通过数字或者正则筛选符合要求的数据所在行数

  1.数字定位法

    格式:

      sed '[行数] [模式]' [待处理文本]

    eg:

      sed '3d' 1.txt

      sed '2,3d' 1.txt

 

  2.正则定位法

    格式:

      sed '[正则表达式] [模式]' [待处理文本]

    eg:

      sed '/^g/d' 1.txt

  

  3.数字和正则

    格式:

      sed '[数字,正则表达式] [模式]' [待处理文本]

    eg:

      sed '3,/^g/d' 1.txt

 

  4.正则和正则

    格式:

      sed '[正则表达式,正则表达式] [模式]' [待处理文本]

    eg:

      sed '/^g/,/^j/d' 1.txt

 

  

模式

  d  :删除

    sed '[定位][模式d]' [待处理文件]

    sed '3d' 1.txt 

 

  p  :打印

    sed '[定位][模式p]' [待处理文件]

    sed '/^g/p' 1.txt

 

  a  : 在当前行下一行添加一行或多行

    sed '[定位][模式a][添加内容]' [待处理文件]

    sed '2axxx' 1.txt

 

  c  :用新文本修改(替换)当前行

    sed '[定位][模式c][新内容]' [待处理文件]

    sed '2cxxx' 1.txt

 

  i   :在当前行插入文本,当前行向下移一行(单独使用时)

    sed '[定位][模式i][添加内容]' [待处理文件]

    sed '2ixxx' 1.txt

 

  r  : 将指定文本中内容读到待处理文本中

    sed '[定位][模式r][指定文本]' [待处理文件]

    sed '2r r.txt' 1.txt

 

  w : 将待处理文本指定行写入指定文件中

    sed '[定位][模式w][指定文本]' [待处理文件]

    sed '2w r.txt' 1.txt

 

  y  : 将字符替换成另一个字符

    sed '[定位][模式y]#[旧字符]#[新字符]#' [待处理文件]

      一个一个字符替换  可以多个字符一起处理

    sed '2y/fa/FA/' 1.txt

 

  s  : 将字符串替换成另一个字符串(每一行只替换一次)

    sed '[定位][模式s]#[旧字符串]#[新字符串]#' [待处理文件]

    sed 's/11/22/' 1.txt

 

  g  : 全部执行(符合正则的都执行)

    sed '[定位][模式s]#[旧字符串]#[新字符串]#[模式g]' [待处理文件]

    sed 's/11/22/g' 1.txt

 

  i   : 忽略大小写(跟 s 模式一起使用时)

    sed '[定位][模式s]#[旧字符串]#[新字符串]#[模式g][模式i]' [待处理文件]

    sed 's/11/22/gi' 1.txt

 

  & :代表前面匹配到的内容

  

案例

  案例1:将nginx.conf中的注释行全部去掉

    [root@localhost ~]# sed '/^ *#/d' /etc/nginx/nginx.conf

    解:把

 

  案例2:将nginx.conf中每一行之前增加注释

    [root@localhost ~]# sed 's/.*/# &/g' /etc/nginx/nginx.conf

 

  案例3:要求一键修改本机的ip

      192.168.15.100 ---> 192.168.15.101

      172.16.1.100 ---> 172.16.1.101

    [root@localhost ~]# sed -i 's#.100#.101#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]

 

  案例4:将/etc/passwd中的root修改成ROOT

    [root@localhost ~]# sed -i 's#root#ROOT#g' /etc/passwd

 

 

END

 

标签:定位,文本,待处理,模式,sed,Linux,txt,三剑客
来源: https://www.cnblogs.com/Snailsys/p/15716372.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有