加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式(初级)之sed

发布时间:2020-12-14 02:26:29 所属栏目:百科 来源:网络整理
导读:sed:数据流编辑器 sed基本用法 sed:StreamEDitor sed:行编辑器[全屏编辑器:vi] sed的内存空间称为模式空间: 默认不编辑源文件, sed[options]'AddressCommand'file...... -n:只打印符合条件的行 -i:直接修改源文件 -eSCRIPT-eSCRIPT:可以同时支持多个脚本
 
 
  1. sed:数据流编辑器
  2. sed基本用法
  3. sed:StreamEDitor
  4. sed:行编辑器[全屏编辑器:vi]
  5. sed的内存空间称为模式空间:
  6. 默认不编辑源文件,
  7. sed[options]'AddressCommand'file......
  8. -n:只打印符合条件的行
  9. -i:直接修改源文件
  10. -eSCRIPT-eSCRIPT:可以同时支持多个脚本
  11. -f/PATH/TO/SED_SCRIPT
  12. sed-f/path/to/scriptsfile
  13. -r:表示使用扩展正则表达式
  14. Address:
  15. 1.StartLine,EndLine(起始行,结束行)中间用,(逗号)隔开
  16. 比如1,100从第一行到第一百行
  17. $:最后一行。$-1倒数第二行
  18. 2./RegExp/这个模式就是正则表达式
  19. /^root/表示以root字符串开头的行
  20. 3./pattern1/,/pattern2/
  21. 第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行
  22. 4.LineNumber
  23. 指定的行
  24. 5.StartLine,+N
  25. 从startLine开始,向后的N行
  26. Command:
  27. d:删除符合条件的行:sed'1,2d'/etc/fstab删除第一行,第二行,,,,sed'/oot/d'/etc/fstab删除中包含oot的行
  28. sed'1,+2d'/etc/fstab删除前三行
  29. p:显示符合条件的行;sed'/^//p'显示以/开头的行
  30. a:string:在指定的行后面追加新的行,内容为string
  31. n:可以换行
  32. i:string:在指定的行前面追加新行,内容为string
  33. rFILE:将指定的文件的内容添加至符合条件的行处。sed'2r/etc/issue'/etc/fstab将/etc/issue文件显示在/etc/fstab后面的第二行
  34. wFILE;将地址指定范围内的行另存至指定文件中
  35. s/pattern/string/:查找并替换,默认只替换每一行中第一次被模式匹配到的串例如:sed's/oot/OOT/'/etc/fstab
  36. 加修饰符:
  37. g:全局替换
  38. i:忽略字符大小写
  39. s///:s###,s@@@等等,都能用。
  40. &:引用模式匹配的整个串例子:sed's#l..e#&r#g'sed.txt把文件中l..e替换成l..er
  41. sed练习题:
  42. 1、删除/etc/grub.conf文件中行首的空白符;
  43. sed's/^[[:space:]]+//g'/etc/inittab
  44. 2、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;
  45. sed-n's/(id:)[0-9](:initdefault)/152/p'/etc/inittab
  46. 3、删除/etc/inittab文件中的空白行;
  47. sed'/^$/d'/etc/inittab
  48. 4、删除/etc/inittab文件中开头的#号;
  49. sed's/^#//p'/etc/inittab
  50. 5、删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;
  51. sed's/^#[[:space:]]{1,}//p'/etc/inittab
  52. 6、删除某文件中以空白字符后面跟#类的行中的开头的空白字符及#
  53. sed's/^[[:space:]]{1,}#//p'/etc/inittab
  54. sed-r's/^[[:space:]]+#//g'/etc/inittab
  55. 7、取出一个文件路径的目录名称;
  56. echo"/etc/rc.d/"|sed-r's@^(/.*/)[^/]+/?@1@g'
  57. 8、取出一个文件路径的基名(也就是目录名称后面的)
  58. echo"/etc/rc.d/"|sed-r's@^/.*/([^/]+)/?@1@g'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读