sed命令使用

sed: 是非交互式的编辑器,或者在线编辑器,它一次处理一行内容,不会修改文件,除非使用shell重定向来保存结果

          原理>>>sed编辑器逐行处理文件(或输 入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空 间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入 文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件


  说明:

^ 行首定位符

$ 行尾定位符

. 匹配除换行符以外的单个字符

* 匹配零个或者多个前导字符

[] 匹配指定字符组内的任一字符

[^] 匹配不再指定字符组内的任一字符

\(..\) 保存已匹配的字符

& 保存查找串以便在替换串中引用

-d(delete)

#sed '2,5d' datafile  //删除第2-5行

# sed '/test/d' example-----删除example文件所有包含test的行。

#sed ‘/my/,/you/d’ datafile  //删除包含my的行到包含you的行之间的行

#sed ‘/my/,10d’ datafile //删除包含my的行到第10行的内容


-s(substitue替换)

#sed 's/^my/you/g' datafile  //命令末端的g表示行内进行全局替换,也就是说如果某行出现多个my,所有的my都被替换为you,把所有以my开头的替换成you

#sed -n '1,20s/my$/you/gp' datafile  //取消默认输出,处理1-20行里匹配以my结尾的行,把行内所有的my替换为you,并打印到屏幕上,-n 不显示处理过

#sed 's#my#you#g' datafile //紧跟在s命令后的字符就是查找串与替换串之间的分隔符。分隔符默认为正斜杠,但可以改变,无论什么字符(换行符,反斜线除外),只要紧跟s命令,就成了新的串分隔符

#sed 's/^/adb install /g'  dir.txt>dic.txt //在dir.txt文件的每一行的开头添加adb install


-e(edit)

用于sed执行多个编辑任务的情况下,在下一行开始编辑前,所有的编辑动作将应用导模式缓冲区中的行上

#sed -e '1,10d' -e 's/my/you/g' datafile //-e用于进行多重编辑,第一重编辑删除1-3行,第二重编辑将出现的所有my替换为you,顺序打乱会影响结果

-p

#sed -n '3p' datafile  //只打印第三行,p表示行

#sed -n '100,200p' datafile //只查看文件的第100行到第200行


详细请见:http://www.iteye.com/topic/587673

                http://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html



你可能感兴趣的:(sed命令使用)