设为首页 收藏本站
查看: 1106|回复: 0

[经验分享] Linux命令:sed简介

[复制链接]

尚未签到

发表于 2018-5-22 07:07:41 | 显示全部楼层 |阅读模式
  sed是一种在线行编辑器,一次处理一行。工作时,把当前处理的行放到“模式空间”中进行编辑,编辑完成后把内容输送至屏幕。
  语法:sed [OPTION]…{script}…[input file]
  选项:
  -r:支持正则表达式
  -n:静默模式,不显示内容
  -e: script1 -e script2 -e script3:指定多脚本运行
  -f /path/to/script_file:从指定的文件中读取脚本并运行
  -i: 直接修改源文件
  

  命令:
  d: 删除模式空间中的行;
  =:显示行号;
  a \text:附加text
  i \text:插入text,支持\n实现多行插入;
  c \text:用text替换匹配到的行;
  p: 打印模式空间中的行;
  s/regexp/replacement/:替换由regexp所匹配到的内容为replacement;
  g: 全局替换;
  w /path/to/somefile:把指定的内容另存至/path/to/somefile路径所指定的文件中;
  r /path/from/somefile:在文件的指定位置插入另一个文件的所有内容,完成文件合并
  

  正则:
  字符匹配:., [], [^]
  次数匹配:*, \?, \+, \{m,n\}, \{n\}
  位置锚定:^, $, \<, \>
  分组及引用:\(\), \1, \2, ...
  多选一:a|b|c
  

  定界:
  #: 指定行;
  $: 最后一行;
  /regexp/:任何能够被regexp所匹配到的行;
  \%regexp%:同上,只不过换作%为regexp边界符;
  /regexp/| :
  \%regexp%| :匹配时忽略字符大小写;
  startline,endline:
  #,/regexp/:从#行开始,到第一次被/regexp/所匹配到的行结束,中间的所有行;
  #,#
  /regexp1/,/regexp2/:从第一次被/regexp1/匹配到的行开始,到第一次被/regexp2/匹配到的行结束,中间的所有行;
  #,+n:从#行开始,一直到向下的n行;
  first~step:指定起始行,以及步长;
  1~2,2~2
  

  高级命令:
  h:用模式空间中的内容覆盖保持空间的内容;
  H:把模式空间中的内容追加至保持空间中内容的后面;
  g:从保持空间中取到其内容,并将其覆盖模式空间中的内容;
  G:从保持空间中取到其内容,并将其追加在模式空间中的内容的后面;
  x:把保持空间和模式空间中的进行交换;
  n:读取匹配到的行的下一行至模式空间;(会覆盖模式空间中的原有内容);
  N:读取匹配到的行的下一行至模式空间,追加在模式空间中原有内容的后面;
  d:删除模式空间中的内容;
  D:删除多行模式空间中的首行;
  注意:命令功能可使用!取反;分号可用于分隔脚本;
  

  练习:
  1.删除/root/file文件中所有行的行首的空白字符
  [root@localhost ~]# cat file && cat file |wc -l
  aaaaaaaaaaaaaaaaa
  bbbbbbbbbbbbbbbb
  cccccccccccccccc
  

  2. 删除/etc/fstab文件中所有以#开头,后跟至少一个空白字符的行的行首的#和空白字符
  [root@localhost ~]# sed 's/^#[[:space:]]\+//' /etc/fstab
  #
  /etc/fstab
  Created by anaconda on Wed Aug 26 23:57:24 2015
  #
  Accessible filesystems, by reference, are maintained under '/dev/disk'
  See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  #
  /dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
  UUID=ccfe9f33-b5da-48b1-821b-b3bec206147b /boot ext4 defaults 1 2
  /dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
  tmpfs /dev/shm tmpfs defaults 0 0
  devpts /dev/pts devpts gid=5,mode=620 0 0
  sysfs /sys sysfs defaults 0 0
  proc /proc proc defaults 0 0
  

  3. 只查看/etc/fstab文件的第1行到第5行
  [root@localhost ~]# sed -n '1,5p' /etc/fstab
  #
  # /etc/fstab
  # Created by anaconda on Wed Aug 26 23:57:24 2015
  #
  

  4.删除文件中包含“my”的行到包含“you”的行之间的行
  [root@localhost ~]# cat file
  this is my test line
  how are you
  hello
  how are you tom
  my
  aaaaaaaaaaaaa
  you
  [root@localhost ~]# sed '/my/,/you/d' file
  hello
  how are you tom
  

  5.查询包含“you”的所有行
  [root@localhost ~]# sed -n '/you/p' file
  how are you
  how are you tom
  you
  

  6.在文件中每行后面添加空行
  [root@localhost ~]# sed 'G' file
  this is my test line
  how are you
  hello
  how are you tom
  my
  aaaaaaaaaaaaa
  you
  

  7. 保证指定的文件每一行后方有且只有一个空白行
  [root@localhost ~]# sed '/^$/d;G' file
  this is my test line
  how are you
  hello
  how are you tom
  my
  aaaaaaaaaaaaa
  you
  

  8.打印奇数行
  [root@localhost ~]# sed -n '1~2p' file
  1,this is my test line
  3,hello
  5,my
  7,you

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-478857-1-1.html 上篇帖子: linux bin sbin目录 下篇帖子: linux之路开始啦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表