sed练习第一节

ed语法和基本命令

employee.txt文件内容如下:

101,John Doe,CEO

102,Jason Smith,IT Manager

103,Raj Reddy,Sysadmin

104,Anand Ram,Developer

105,Jane Miller,Sales Manager

Sed代表Stream Editor(流编辑器),是操作、过滤和转换文本内容的强大工具。Sed可以从文件和管道中读取输入。在你的bash启动文件中,就可能有不少用来设置各种环境的sed命令,这些命令你或许并不是很理解。

用法:

sed [option] {sed-commands} {input-file}

sed首先从input-file中读取第一行,然后执行所有的sed-commands;再读取第二行;执行所有的sed-commands,重复这个过程,直到input-file结束

示例1,打印所有的行

[root@sishen ~]# sed -n 'p' employee.txt

101,John Doe,CEO

102,Jason Smith,IT Manager

103,Raj Reddy,Sysadmin

104,Anand Ram,Developer

105,Jane Miller,Sales Manager

使用sed脚本的语法是:

sed [ options ] -f { sed-commands-in-a-file } { input-file }

示例2,使用sed脚本打印输出/etc/passwd文件中以root和nobody开头的行:

[root@sishen ~]# vim test.sed

/^root/ p

/^nobody/ p

[root@sishen ~]# sed -n -f test.sed /etc/passwd

root:x:0:0:root:/root:/bin/bash

nobody:x:99:99:Nobody:/:/sbin/nologin

-e的用法

sed [ options ] -e { sed-command-1 } -e { sed-command-2 } { input-file }

[root@sishen ~]# sed -n -e '/^root/p' -e '/^nobody/p' /etc/passwd

root:x:0:0:root:/root:/bin/bash

nobody:x:99:99:Nobody:/:/sbin/nologin

或者

[root@sishen ~]# sed -n \

> -e '/^root/p' \

> -e '/^nobody/p' \

> /etc/passwd

root:x:0:0:root:/root:/bin/bash

nobody:x:99:99:Nobody:/:/sbin/nologin

注意空格!!!

也可以使用{ }将多个命令分组执行

sed [ options ] ‘{

sed-command-1

sed-command-2

}’input-file

[root@sishen ~]# sed -n '{

/^root/ p

/^nobody/ p

}' /etc/passwd #注意空格

root:x:0:0:root:/root:/bin/bash

nobody:x:99:99:Nobody:/:/sbin/nologin

注意:sed不会修改原始文件input-file,它只是将结果内容输出到标准输出设备。如果保持变更,应该使用重定向>filename.txt

posted on 2016-11-14 11:52  Lucky_7  阅读(212)  评论(0编辑  收藏  举报

导航