个人工作之中经常使用sed,但是比较简单的命令,并没有仔细的研究过sed详细用法,所以参考man手册进行了详细的整理。
sed是一个流式文本编辑器,可用来过滤和转换文本。基本用法如下:
[source,shell]
----
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
----
其中的“[OPTION]”是可选的命令行参数,“{script-only-if-no-other-script}”是要执行的sed命令(如果没有用-e或-f指定别的命令的话,否则会视为输入文件路径),“[input-file]”是输入文件的路径。
sed的命令格式为:[地址]命令。地址是可选的,根据具体的命令而定。如‘/^hostname/aip=8.8.8.8’,‘p’等,地址格式和具体的命令可参下文。
== 选项及其含义
-n::
--quiet::
--silent::
禁用自动打印模式空间,也就是禁止打印匹配的内容
-e script, --expression=script::
添加要执行的sed命令
-f script-file, --file=script-file::
将文件中的内容添加到要执行的命令中
--follow-symlinks::
在in-place(如下)模式下,追踪符号链接
-i[SUFFIX], --in-place[=SUFFIX]::
对文件进行直接更改,如果提供了SUFFIX,会使用SUFFIX作为扩展名进行备份
-l N, --line-length=N::
指定行的长度
--posix::
禁用所有的GNU扩展
-E, -r, --regexp-extended::
在命令中使用posix扩展正则表达式(考虑到兼容性,应使用-E)
-s, --separate::
将各个文件单独对待,而不是一个长的连续的文本流。
--sandbox::
在沙箱模式下运行
-u, --unbuffered::
每次加载较小数量的数据,并加快刷新输入缓存的频率。
-z, --null-data::
采用NUL字符(ascii 0)分割行
--help::
显示帮助信息
--version::
打印版本信息
如果没有指定-e,--expression,-f或--file选项,那么第一个非选项参数(及位置参数)将被作为命令来对待,剩下的所有参数都将作为文件名处理,如果没有指定文件名,则在标准输出中读取数据。
== 命令列表
=== 无地址命令
: label::
*b*和*t*的标号
#comment::
注释持续到换行符(或-e参数的结尾)
}::
{}区块的闭合括号
=== 0或1个地址的命令…