标签:编辑器 command 表达式 stream 空间 sed
sed基本用法:
sed:stream editor,它是一个行编辑器,它并不编辑文件本身,它把符合条件的行读入内存(模式空间),对其进行操作后显示出来。
命令格式:
sed [option] ‘adresscommand‘ file
option:
-n:不打印模式空间中的内容(静默模式)
-i:直接修改原文件
-e:-e SCRIPTE -e SCRITE 可以同时执行多个脚本
-f filename or path:可以把脚本写入文件 ,然后读取执行操作
-r:表示使用正则表达式
Address:
startline,endline,比如1,100
/RegExp/, 比如/^root/,匹配以root开头的行
/pattern1/,/pattern2/ 表示第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这之间所有行。
linenumber 指定的行
startLine,+N 表示从开始行向后的n行,一共n+1行。
command:
d:删除 例:#sed "1,2d" /etc/fstab 删除文件前两行 $代表最后一行
sed "/oot/d" /etc/fstab 删除文件中带有oot的行
sed "1d" /etc/fstab 删除第一行
p:显示符合条件的行
例:sed "/^\//d" 删除以/开头的行
a:\string 在匹配的行后面追加新行,内容为string
例:sed "/^\//a \heheda" /etc/fstab 在以/开头的行后追加heheda
i:\string 在匹配的行前面插入新行,内容为string
r FILE :把文件内容添加到符合条件的行处
例:sed "2r /etc/issue" /etc/fstab 在fstab第二行插入/etc/issue的内容
w FILE :把符合条件的行保存到另一个文件中
例:sed "/^1/w /hehe.txt" /etc/fstab 把开头为1的行另存为至 、
s/pattern/string/:查找并替换,默认替换每行中第一次被模式匹配到的串,如果要全局替换,则要加修饰符:
修饰符:
-g :全局替换: 例: sed "s/hehe/haha/g" /etc/passwd
-i: 不区分大小写
例:sed "s/hehe/haha/" /etc/passwd 把每行中第一次出现的hehe替换成haha
这里的s///中的/可以为三个任意想同字符:所以上面一句可以等价为:
sed "s@hehe@haha@" /etc/passwd
例子1:
l..e: like-->liker
love-->lover
sed "s#l..e#&r#g" sed.txt
&:表示模式匹配到的整个串
也可以使用后向引用实现:
sed "s#\(1..e\)#\1r#g" sed.txt
有些时候只可以使用后向引用,而不能使用&
比如:like-->Like
love-->Love
sed "s#l\(..e\)#L\1#g" sed.txt #\1就是代表前面括起来的部分
例子2:
删除文件行首的空白字符
sed "s/^[[:space:]]*//" sed.txt
标签:编辑器 command 表达式 stream 空间 sed
原文地址:http://hackcrack.blog.51cto.com/6169318/1684788