sed小感悟

小感一点

一、砖头勾引和田玉

先说点自己对sed的目前掌控吧,sed是一个文本流编辑器,逐行处理文件。默认情况下并不直接改变原本文件内容(除非使用-i选项)。

sed工作有两个空间pattern space和holding space。

pattern space, sed逐行将文本行拿出,置于pattern space中,然后做相应处理,默认操作是对每一个经过pattern space的行做输出至屏幕操作(-n选择静默模式不打印pattern space中没有被打印的行,仅仅打印被匹配的行)。

hold buffer空间,选用h操作就能将在pattern space中被匹配到的内容复制一份到hold buffer中并且覆盖原有hold buffer的记录。选用H操作就追加一行内容到hold buffer中,况且,每当使用H操作时,hold buffer默认会有一行的预留空间。

能用sed实现奇偶行调换,也算是对sed有了中级认识,原理就像C语言实现两个变量互换值域一样,先将要调换的拿出来,放入另一个区域中,再做操作,然后再操作初始值。

例:用sed这样实现

#sed -e ‘1~2{h;d;}‘ -e ‘{G}‘ testfile

命令流程和操作过程如下图

testfile文件

用h操作

用H操作

二、记录下sed的通用格式和部分选项及其command

sed [options] ‘[address]|[/pattern/][actions]‘ FILE

address

first~step

1,$

/BRE1/,/BRE2/

pattern /BRES/

actions

a \string

i \string

c \string

h 将结果暂存于holding buffer

G 调用holding buffer中的数据至pattern space中,再打印。
        [1,3]s ///

r filename 把filename放置到匹配前面address或者pattern的后面

q 找到地址后面就退出

s/pattern/string/[g p w i]

此命令只替换被模式匹配到的字符本身,要是替换整行用 /pattern/c \string

g 默认只替换第一次被模式匹配到的内容,要全局修改用g

p 打印该变动行

i 忽略大小写去搜索

w filename 重定向输出该行到制定文件夹。如‘s///w sed.out‘

#sed ‘s/\(l..e\)/\1r/g‘ sed.txt

若只将 love改为Love

#sed ‘s/l\(..e\)/L\1/g‘ sed.txt

将行首的至少一个空格字符删除

#history | sed ‘s#^[[:space:]]+##g‘


三、小点仅作自己记忆参考

小点一、关于addresss

first~step 从第一行开始,每两步匹配一次,或是说每两行执行一次后续操作,如下例,没两行执行一次{h;d},也就是说只有第一行被放入holding buffer,第二行执行默认操作(输出)。

例子

#sed -e ‘1~2{h;d;}‘ -e ‘{G;}‘ /etc/inittab

小点二、sed的替换用于修改字符串。

这种情况通常是比较恶心的,尤其是锚定前后字符串的,比如把/etc/inittab 中id:3:initdefault中的冒号中间的数字换成5

方法一、(&)

#sed ‘s/l..e/&r/g‘ sed.txt

方法二、(后向引用)

#sed ‘1,$s/\(id:\)[0-9]\(:initdefault:\)/\15\2/g‘ /etc/inittab

小点三、sed脚本格式

#vim script.sed
    #!/bin/sed
    #name
    #replace the first line with a "hello" 
    1 c\ hello
    
    #replace the last line with a "hello"
    $ c\ hello
    
    #add "hello" upon which "evening" been matched.
    /eventing/ i\ hello
    
    #add "hello" after 3th line.
    3 a\ hello
    
#sed -f script.sed /etc/inittab

一点小见解,前面的关于sed引用空间的见解完全是自己摸索,但是不知道是否正确,恳请各位大牛多多指正。

时间: 2024-10-17 00:25:15

sed小感悟的相关文章

grep&sed小随笔

由于工作需要,需要截取一个html文件中的一些段,导入到数据库中(当然用诸如UE.Notepad++之类的文本编辑软件可以很简单的实现).但是,思考了一下能否使用命令去实现呢? 以下是一个模板文件: 当然,一个html文件中不可能只有这几个段,我们可以使用'grep -e 字符串1 -e 字符串2'这样的命令去筛选就好了. [[email protected] myScript]# cat test.log  <sffid>1234</sffid> <policyno>

加班的小感悟

今天趁着加班,上传文件上会外网. 不敢说什么涉密的东西,只是小小的感慨一下. 今天加班,说起来的原因,有三: 1 上周做的镜像,在没有确认的情况下,发给客户,导致客户在现在无法使用.这种错误,对于一个新人来说也是无法原谅的. 2 以前的旧功能替换,实属业务需求,恰逢尴尬时期. 3 BOSS分配的任务没有做完,卡在小问题上,无法解决.Eclipse插件透视图无法通信. 总结起来,有以下原因: 1 自己的技术,不到位,还需要锻炼. 2 不够细心,没有把做好东西,仔细检查. 3 考虑问题不够全面,总是

高校某项目上线小感悟

高校某项目上线第一天到今天正式告一段落,项目取得了成功,得到了学校的认可,各种小感悟集中记录一下吧. 1.小问题不要留到最后解决,留着留着就忘了,一旦发生问题就是很麻烦的事情. 2.项目应该预留充足的测试时间,数据测试不是简单的输入校验,还有业务逻辑校验. 3.数据库字段的长度不能随意设定,最好适当,宁要大,不要小. 4.如果你能事先预料到会发生的问题,那么请立即着手解决,因为它真的就会发生. 5.如果你能预感到客户遗漏的业务需求,你有义务告知客户,这种需求迟早是需要满足的,隐瞒客户不会给自己省

一些小感悟

这儿用来记录平时的想到或看到的一些小感悟 1.大丈夫行于天地之间,当能屈能伸,学会隐藏实力 这个是在职场中的感想.有时候工作环境并不那么顺心,但你有无法改变着环境,那么你只能委屈忍受,慢慢积攒实力,等待有一天需要你的时候,展现你的实力. 另外,也要学会隐藏实力,尤其在进入新环境不熟悉的情况下,否则可能招来嫉妒. 2.其实人要长大很简单 但要保持一颗享受万事万物的童心却很难. 3.成熟的尽头,是真实. 4.我就是你的大海. 4.只工作不玩耍,聪明的孩子也变傻.  这是4月6日晚上看<头号玩家>里

一点小感悟关于df lsblk fdisk命令关于三种存储

物理块与文件系统之间的关系图: 映射关系:扇区→物理块→逻辑块→文件系统 dfisk:物理块  lsblk:逻辑块  df:文件系统 分布式存储的应用场景根据其存储接口,即提供的访问接口,现在流行分为三种: tip:所谓数据存储的接口,就是数据传到哪里你就得接走去存,接走后,剩下的工作就是你做,由你落盘,至于从谁手里接,得看你打交道的对象的支撑.对象存储: 也就是通常意义的键值存储,其接口就是简单的GET.PUT.DEL和其他扩展,如七牛.又拍.Swift.S3.我认为是从应用层把数据接走,数据

NLog类库的使用探索(一)+实习小感悟

1 写在前面 1.1 为什么学了软件 1.高考失败,分数不高,不能随心所欲 2.农村孩子,学点技术,将来有口饭吃 3.有科技含量,想玩电脑(那个时候是这么想的,那个时候觉得学计算机就是玩电脑) 1.2 为什么选了C# 1.大一大二学了c,C++,大三分方向NET和JAVA,觉得C,C++,C#看着好看,读者顺,就选了. 2.大多数学习好点的学了JAVA,不想跟风选了C# 1.3  选择决定命运 本科时候winform,asp.net,WindowsPhone各学了半年,学的最好的还算是WP,只能

交流的一些小感悟

最近总是觉的公司里的人,在交流上有一点小问题,不是很通畅. 互相不是很清楚对方说的什么,在讨论时想的起点不一样,导致在讨论后,得不出什么好的建议和结果. 一开始我以为是我们太厉害,思为太具有跳跃性,导致这种情况的出现. 但在后来慢慢的观察中我发现并不是这样,信息的中断才是这事情的最大原因. 比如: 我们在开发一个新功能时,主管和成员开始是很好的定制了计划, 但在后期实现时主管可能由于其它原因,没有在跟踪实现进程, 并且在实现时可能由于个人能力或需求变化原因,使得实现计划发生了改变, 在这时如果主

读完《大道至简》后的小感悟

初次看到<大道至简>这本书的书名时,我被震惊到了,当时觉得十分奇怪,一本讲计算机编程的书怎么会有一个如此文雅的名字?上网搜索这本书,发现学界对这本书的评价还是十分高的,周爱明老师的<大道至简>这本书被誉为"激荡新思的佳作",作为一名软件工程专业准大二的学生,在老师的建议下,我利用暑假的时间阅读了整本书,书中作者对于编程的讨论对我的启发还是十分大的. 读完这本书后,反观我自己大学一年的编程存在许多问题.在过去一年的编程中,看到某一道编程题,会拿起来就开始写,缺少自

《构建之法》个人获奖小感悟

A君个人获奖小感言 所在班级:<https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesign/> 博客主页:<https://www.cnblogs.com/voicing/> 对于课程的看法: 在系统分析与设计这门课当中,首先让我们通读了邹欣老师的<构建之法>这本书,让我对于一些相关的知识有了一定的了解,包括一些个人编程和团队合作的内容.但是同时也完成了对自己的一个分析,在第一篇博客当中写了