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的话就可以直接定位编辑。非常的方便~
ok
mjj通道