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

Shell 学习(六)---sed

[复制链接]

尚未签到

发表于 2018-8-24 09:59:55 | 显示全部楼层 |阅读模式
  作者对sed总结的很好,所以转帖了:
  原帖地址: http://blog.da-fang.com/2009/09/linux-sed-script-%25e6%258e%25a7%25e5%2588%25b6%25e7%25ac%25a6-%25e5%2591%25bd%25e4%25bb%25a4%25e8%25af%25a6%25e8%25a7%25a3/
  今天下午终于抽空研究了下sed。Sed是一个非交互性上下文编辑器,它被设计用来在以下环境中发挥作用:
可以直接操作或编辑那些对常规编辑器而言太大的文件。相信很多人都有过打打开一个大文件会拖死你的电脑的情况;编辑命令太复杂(windows上貌似不存在这种情况,用命令行的linux就难说了)很难以在交互模式下编辑文件;要在对输入的一趟扫描中有效的进行多个‘全局’(global)编辑函数在开始介绍sed的控制符与语法之前,先概述几个概念:四个空间:input stream, pattern buffer, output stream 和 hold buffer基本操作过程:将 input stream 的当前行放入 pattern buffer, 然后 input stream 的指针指向下一行 ;对 pattern buffer 中的行进行处理 ;将上面的处理结果放入 output stream. 然后循环这个过程 .hold buffer 是另一个空间 , 可以通过命令和 pattern buffer 进行交互 .Sed命令介绍:一: 基本命令:字符串替换:’s’基本用法:e.g.  sed ‘s/day/night/’ new该例子将文件 old 中的每一行第一次出现的 day 替换成 night, 将结果输出到文件 new对上述例子的说明:s            表示替换命令 /../../ 分割符 (Delimiter),第一个/../表示要搜索的字符或正则表达式,也就是上面例子中的’day’;第二个/../表示要用来替换的字符串,也就是上面例子中的’night’用 & 表示匹配的字符串有时可能会想在匹配到的字符串周围或附近加上一些其它的字符,那么可以像下面这样来操作:sed ‘s/abc/(abc)/’ new该例子从old文件中读取字符,在找到的 abc 前后加上括号,然后协会到文件new。该例子还可以写成sed ‘s/abc/(&)/’ new #效果和上面的一样下面是更复杂的例子 :sed ‘s/[a-z]*/(&)/’ newsed ‘s/[0-9]*/& &/’ new用 \1, \2, …, \9 来表示匹配的字符串先看个例子:sed ‘s/\([a-z]*\)[0-9]*/\1/’ new  #本例中 \1 就是指前面的 \([a-z]*\)#如果在old文件中有内容:abc123 abc123那么在new文件中将会是:abc abc\1, \2, …, \9 也可以出现在搜索字符串中,例如:sed ‘s/\([a-z]*\) \1/\1/’ new #本例可以去除重复的由字母组成的词替换选项1.4.1 /g 替换所有的sed 默认只替换搜索字符串的第一次出现 , 利用 /g 可以替换搜索字符串所有出现的地方, 例如:sed ‘s/\([^ ]*\)/(&)/g’ new1.4.2  用 /1, /2, … 来表明替换哪一次出现sed ‘s/[^ ]*//2′ new #替换搜索到的第二次出现,可以从 /1 用到 /5121.4.3  /p print 选项当 sed 命令有 -n 选项时 , 该命令没有输出,例如,sed -n ‘s/\([a-z]*\)[0-9]*/\1/’

运维网声明 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-555845-1-1.html 上篇帖子: Shell 学习(六)---sed 下篇帖子: shell 中的 logger
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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