2014年2月25日

摘要: 首先,应该明白模式空间的定义。模式空间就是读入行所在的缓存,sed对文本行进行的处理都是在这个缓存中进行的。这对接下来的学习是有帮助的。 在正常情况下,sed将待处理的行读入模式空间,脚本中的命令就一条接着一条的对该行进行处理,直到脚本执行完毕,然后该行被输出,模式空间请空;然后重复刚才的动作,文件中的新的一行被读入,直到文件处理完备。 但是,各种各样的原因,比如用户希望在某个条件下脚本中的某个命令被执行,或者希望模式空间得到保留以便下一次的处理,都有可能使得sed在处理文件的时候不按照正常的流程来进行。这个时候,sed设置了一些高级命令来满足用户的要求。 总的来说,这些命令可以划分为以下三类 阅读全文
posted @ 2014-02-25 16:42 菲一打 阅读(367) 评论(0) 推荐(0)
 
摘要: 1. 括号在同一行# cat test2good morning (good afternoon) (good evening) (goodgood) (good morning)# cat sed2.lens/([^)]*)/AAA/g# sed -f sed2.len test2good morning AAA AAA (goodgood) AAA2. 括号跨行# cat sed3.lens/([^)]*)/AAA/g/(.*/{ N s/([^)]*)/AAA/g P D}# sed -f sed3.len test2good morning AAA AAA AAA AAA 阅读全文
posted @ 2014-02-25 14:56 菲一打 阅读(5064) 评论(0) 推荐(1)
 
摘要: 1、sed执行模板=sed'模式{命令1;命令2}'即逐行读入模式空间,执行命令,最后输出打印出来2、为方便下面,先说下p和P,p打印当前模式空间内容,追加到默认输出之后,P打印当前模式空间开端至\n的内容,并追加到默认输出之前。sed并不对每行末尾\n进行处理,但是对N命令追加的行间\n进行处理,因为此时sed将两行看做一行。2-1、n命令n命令简单来说就是提前读取下一行,覆盖模型空间前一行(并没有删除,因此依然打印至标准输出),如果命令未执行成功(并非跳过:前端条件不匹配),则放弃之后的任何命令,并对新读取的内容,重头执行sed。例子:从aaa文件中取出偶数行1234567 阅读全文
posted @ 2014-02-25 14:16 菲一打 阅读(1261) 评论(0) 推荐(0)
 
摘要: 1、sed执行模板=sed'模式{命令1;命令2}'即逐行读入模式空间,执行命令,最后输出打印出来2、为方便下面,先说下p和P,p打印当前模式空间内容,追加到默认输出之后,P打印当前模式空间开端至\n的内容,并追加到默认输出之前。sed并不对每行末尾\n进行处理,但是对N命令追加的行间\n进行处理,因为此时sed将两行看做一行。2-1、n命令n命令简单来说就是提前读取下一行,覆盖模型空间前一行(并没有删除,因此依然打印至标准输出),如果命令未执行成功(并非跳过:前端条件不匹配),则放弃之后的任何命令,并对新读取的内容,重头执行sed。例子:从aaa文件中取出偶数行1234567 阅读全文
posted @ 2014-02-25 08:59 菲一打 阅读(8837) 评论(0) 推荐(0)