sed 同样可以通过 shell 中的重定向将输出重定向到一个文件中,但这个文件必须不能与用于输入的是同一个文件。
sed 命令的两种语法分别如下所示:
sed [OPTIONS] 'COMMAND' [FILE] ...
sed [OPTIONS] -f SCRIPTFILE [FILE] ...
sed 有如下常用的选项:
- -e —— 它告诉 sed 将下一个参数解释为 sed 指令。只有在命令行上给出多个 sed 指令时才需要使用 -e 选项。
- -f —— 指定由 sed 指令组成的脚本的名称。如果 sed 脚本的第一行为“#n”,则 sed 的行为与指定 -n 选项相同。
- -i —— 直接修改读取的内容,而不是输出到终端。
- -n —— 取消默认输出。在一般 sed 的用法中,所有来自标准输入的数据一般会被显示到终端上。但如果使用 -n 参数后,只有经过 sed 处理的行才会被显示输出。
sed 指令的语法形式:
- 不指定地址(操作行),那么它被应用于每个输入行。
- 指定地址范围
[start_address,end_address] command
- 指定单个地址
[single_address] command
- 编辑命令还可以使用大括号进行分组以使其作用于同一个地址,其语法格式为:
[address]{
command1
command2
command3
}
注意:上面的语法中,command1 可以与左大括号放在同一行,但是右大括号必须自己单独处于一行。如果命令之间使用分号分隔,那么可以将多个 sed 编辑命令放在同一行。但是不提倡在同一行放置多个编辑命令。
sed 的编辑命令有 24 个,具体可以参考 sed 的 man 参考手册。
本文参考自 《Linux Shell命令行及脚本编程实例详解 》