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