Linux下非常实用的文件处理命令sed的使用详解

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。但是文件内容并没有真正改变,除非你使用重定向存储输出,才会将修改真正写入文件。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。


参数:

-n:使用该参数后,只输出做了改变的内容,未被改变的内容不输出

-i:将内容保存到文件中,而不是输出到屏幕上(如果要改变文件的内容,必须使用-i参数)

还有其它什么-e,-f,-r参数,本人看不懂,所以不列出来。我这里只列举自己测试成功的内容。


动作:

n,m:表示从第n~m行

$:表示最后1行

n,$:如果从第n行~最后1行


a:新增内容,在当前行的下一行新增内容,比如在a.txt的第二行插入hello,sed '1a hello' a.txt,如果不指定1a,直接写a的话,则会在每一行后面都插入hello


c:取代,比如在a.txt中,用hello替换第1~3行的内容,sed '1,3c hello' a.txt


d:删除行,比如删除第1行,sed '1d' a.txt,删除第2~最后1行行,sed '2,$d' a.txt


i:插入,在当前行的上一行新增内容,比如在a.txt的第一行插入hello,sed '1i hello' a.txt,如果不指定1i,直接写i的话,则会在每一行上方都插入hello(该动作跟a动作是相反的,a是在下方插入,i是在上方插入)


p:重复显示,将指定行的内容重复显示,效果如图:

指定第1行的内容显示2次


如果直接指定内容,比如我指定/code = /p,表示搜索内容格式为code = 的内容,然后找到后重复显示,如下图




s:文本替换,'1,$/旧字符串/新字符串/g',即从第1行~最后一行,用新字符串替换旧字符串,g表示全局替换。如sed '1,$s/id/userid/g' a,效果如下:


如果不加g的话,则只会替换每一行第一个匹配的字符串。写正则表达式的时候要特别注意[]之类的关键字符,要进行转义。


使用sed的好处:假如你有1个文件,里面有100万行内容,你想改变第10000行位置的内容,如果用vi来编辑的话,人都疯了。但是用sed的话就可以直接定位编辑。非常的方便~

  1. 本网站所收集的部分资料来源于互联网,本站不对其真实性负责,也不构成任何其他建议。如果您发现有侵犯您权益的内容,请与我们取得联系,我们会及时修改或删除。
  2. 传递知识、传递力量,欢迎各位网友对本站的文章进行转载和分享。
  3. 本站QQ群交流群:904314688  群号:904314688
发表评论
 
评论列表(目前共有 条评论)
暂时还没有评论哦~

文章搜索

商家广告


版权所有:秋风雅居 (www.198933.com) ©2024 All Rights Reserved.

粤ICP备20031662号