您的位置:首页 > 其它

sed命令

2015-08-14 22:14 295 查看
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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: