.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28. .TH SED "1" "2017年2月" "sed 4.4" "用户命令" .SH 名称 sed \- 文本筛选和格式转换的流式编辑器 .SH 摘要 .B sed [\fI选项\fR]... \fI{script-only-if-no-other-script} \fR[\fI输入文件\fR]... .SH 描述 .ds sd \fIsed\fP .ds Sd \fISed\fP \*(Sd是一个流式编辑器。流式编辑器是用来在输入流(一个文件或者管道输入)中 完成基本文本转换的。当在一些允许脚本编辑的编辑器中(比如\fIed\fP),\*(sd通过将 输入传输为一个输入来工作,这样更高效。但是是\*(sd的功能来过滤管道的文本并 从其他类型的编辑器中特别识别出这些文本。 .HP \fB\-n\fR, \fB\-\-quiet\fR, \fB\-\-silent\fR .IP 不自动打印模式空间的内容 .HP \fB\-e\fR 脚本, \fB\-\-expression\fR=\fI脚本\fR .IP 添加脚本到将要执行的命令 .HP \fB\-f\fR 脚本文件, \fB\-\-file\fR=\fI脚本文件\fR .IP 添加脚本文件的内容到即将执行的命令 .HP \fB\-\-follow\-symlinks\fR .IP 处理已存在文件时跟随链接 .HP \fB\-i[SUFFIX]\fR, \fB\-\-in\-place\fR[=\fISUFFIX\fR] .IP 编辑已存在的文件(如果提供了SUFFIX作为后缀则做备份) .HP \fB\-l\fR N, \fB\-\-line\-length\fR=\fIN\fR .IP 指定'l'命令需要的自动换行长度 .HP \fB\-\-posix\fR .IP 禁用所有GNU插件。 .HP \fB\-E\fR, \fB\-r\fR, \fB\-\-regexp\-extended\fR .IP 在脚本中使用扩展正则表达式(为了可移植性,请使用符合POSIX的\fB\-E\fR) .HP \fB\-s\fR, \fB\-\-separate\fR .IP 将多个文件分别看待,而非统一视作同个连续的流。 .HP \fB\-\-sandbox\fR .IP 在沙箱模式下操作。 .HP \fB\-u\fR, \fB\-\-unbuffered\fR .IP 从输入文件中读取最少量的数据并更频繁地刷新输出缓冲区 .HP \fB\-z\fR, \fB\-\-null\-data\fR .IP 用NUL字符分割行 .TP \fB\-\-help\fR 显示这个帮助并退出 .TP \fB\-\-version\fR 输出版本信息并退出 .PP 如果没有给出\fB\-e\fR,\fB\-\-expression\fR,\fB\-f\fR,或者\fB\-\-file\fR选项, 那么第一个非选项参数会被当作sed脚本解释。所有余下的参数是输入文件的名称; 如果没有指定输入文件,那么就会读取标准输入。 .PP GNU sed主页:。使用GNU软件的通用帮助 :。Bug报告请发送电子邮件至:。 .SH "命令摘要" 这只是为已经知道\*(sd命令和相关文档(例如texinfo文档),需要翻阅命令完整 描述的人准备的\*(sd命令的简短摘要。 .SS 零地址“命令” .TP .RI :\ label .B b 和 .B t 命令的标签。 .TP .RI # comment 注释将会延长到下一个新行 (或者一个 .B -e 脚本片段的结尾。) .TP } 一个{ }块的闭括号。 .SS 零或一地址命令 .TP = 答应当前行的行号。 .TP a \e .TP .I text 追加 .IR text , text可以通过预先写入反斜杠来嵌入新行。 .TP i \e .TP .I text 插入 .IR text , text可以通过预先写入反斜杠来嵌入新行。 .TP q [\fIexit-code\fR] 立即退出\*(sd脚本而不处理其他输入,除非自动打印没有禁用使得当前模式 空间将会被打印。[\fIexit-code\fR]是GNU插件(扩展)。 .TP Q [\fIexit-code\fR] 立即退出\*(sd脚本而不处理其他输入。这是一个GNU插件。 .TP .RI r\ 文件名 从 .IR 文件名 读取内容并追加到最后。 .TP .RI R\ 文件名 从 .IR 文件名 读取一行并追加到最后。每次调用这个命令就从文件中读取一 行。这是一个GNU插件。 .SS 接受范围地址的命令 .TP { 开始一个命令块(以一个}结束)。 .TP .RI b\ label 程序跳转到\fIlabel\fR处;如果\fIlabel\fR被省略,跳转到脚本尾部。 .TP c \e .TP .I text 用 .IR text 代替选择的行, .IR text 可以通过预先写入反斜杠来嵌入新行。 .TP d 删除模式空间。 开始下一个循环。 .TP D 如果模式空间包含新行,在d命令发布之后开始一个新的普通循环。否则, 删除模式空间中的text直到新行,并且在不读入新行的情况下,用结果的 模式空间开始一个循环。 .TP h H 复制/追加模式空间到保存空间。 .TP g G 复制/追加保存空间到模式空间。 .TP l 用“直观明确”的格式列出当前行。 .TP .RI l\ width 用“直观明确”的格式列出当前行,在\fIwidth\fR字符处结束。这是一个GNU插件。 .TP n N 读取/追加下一行输入到模式空间。 .TP p 输出当前的模式空间。 .TP P 输出直到遇到当前模式空间的第一个嵌入的换行符。 .TP .RI s/ regexp / replacement / 尝试与模式空间匹配\fIregexp\fR,如果成功,用\fIreplacement\fR代替匹配的部分 。\fIreplacement\fR可能包含特殊字符\fB&\fR来引用模式空间中匹配的部分,而特殊 字符\e1到\e9则引用\fIregexp\fR中对应匹配的子表达式。 .TP .RI t\ label 自上次输入行读取之后并且上次执行了t或者T命令之后,如果一个s///被 成功替换,那么跳转到\fIlabel\fR处;如果\fIlabel\fR被忽略,跳转到脚本结尾。 .TP .RI T\ label 自上此输入行读取之后并借上次执行了t或者T命令之后,如果一个s///被 成功替换,那么跳转到\fIlabel\fR处;如果\fIlabel\fR被忽略,跳转到脚本结尾。这是 一个GNU插件。 .TP .RI w\ filename 将当前的模式空间写入到\fIfilename\fR中。 .TP .RI W\ filename 写入当前模式空间的第一行到\fIfilename\fR中。这是一个GNU插件。 .TP x 交换模式空间和保存空间的内容。 .TP .RI y/ source / dest / 将模式空间中显示为\fIsource\fR的字符用\fIdest\fR字符来写出。 .SH 地址 \*(Sd命令可以没有指定地址,这样将会为所有行执行命令。如果给出了一个地址, 这样命令就只会为匹配此地址的行执行;如果给出了两个地址,这样命令将会对 从匹配的第一个地址到第二个地址的区域的所有输入行执行命令。 关于地址范围有三点:语法为:\fIaddr1 , addr2\fR(比如,地址要用逗号分开); \fIaddr1\fR匹配的行一定会被接受,即使\fIaddr2\fR选定的是更靠前的行;并且如果\fIaddr2\fR是 一个\fIregexp\fR(正则表达式),它将不会重复测试\fIaddr\fR匹配的行。 .PP 在地址(或地址范围)之后,在命令之前,可以插入一个\fB!\fR,这个符号定义的命令 只有在地址(地址范围)\fB不\fR匹配的时候才能执行。 .PP 支持下面的地址类型: .TP .I number 只匹配行号为\fInumber\fR的行。(除非\fB-s\fR选项在命令行中被指定,number值将 会按照文件数渐增。) .TP .IR first ~ step 匹配每一个第\fIstep\fR行并从\fIfirst\fR开始计数。举个栗子,``sed -n 1~2p''将 打印出输入流所有奇数行,而地址2~5将匹配从第2行开始的,以5为步长的 行。\fIfirst\fR可以是零;这样,\*(sd按其为\fIstep\fR来操作。(这是一个插件。) .TP $ 匹配最近的行。 .TP .RI / regexp / 匹配符合正则表达式\fIregexp\fR的行。 .TP .BI \fR\e\fPc regexp c 匹配符合正则表达式\fIregexp\fR的行。 其中\fBc\fR可以是任意字符。 .PP GNU\*(sd同样支持某些特殊2地址格式: .TP .RI 0, addr2 从“匹配了第一个地址”状态始,直到发现\fIaddr2\fR。这和\fI1, addr2\fR很相似, 除了当\fIaddr2\fR匹配了输入的第一行,\fI0, addr2\fR形式将在该范围的结尾;而 \fI1, addr2\fR形式仍然在该范围的开始。这种形式只有在\fIaddr2\fR是正则表达式 的情况下才有效。 .TP .IR addr1 ,+ N 将会匹配 .I addr1 和在 .IR addr1 之后的 .I N 行。 .TP .IR addr1 ,~ N 将会匹配 .I addr1 和 .I addr1 之后的输入行数是 .IR N 倍的下一行。 .SH "正则表达式" POSIX.2 BREs\fI应该\fR是支持的,但是由于性能的原因,这个特性还不完全。其中 \fB\en\fR序列匹配换行符,\fB\ea\fR、\fB\et\fR和其他序列也是类似的。\fI-E\fP选项开关用来选择是否使用扩展正则 表达式;-E选项已经由GNU sed支持了很多年,现已包含于POSIX中。 .SH BUGS .PP 请将错误报告发送至\fBbug-sed@gnu.org\fR。另外,请在邮件正文中尽量包含 ``sed --version''的信息。 .SH 作者 由 Jay Fenlason, Tom Lord, Ken Pizzini, 和 Paolo Bonzini写成。 GNU sed 主页: . 使用 GNU 软件的一般性手册: . E-mail bug 报告到: . .SH 版权 Copyright \(co 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later . .br This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. .SH "参见" .BR awk (1), .BR ed (1), .BR grep (1), .BR tr (1), .BR perlre (1), sed.info, 任何和\*(sd相关的书籍, .na \*(sd常见问题(http://sed.sf.net/grabbag/tutorials/sedfaq.txt), http://sed.sf.net/grabbag/。 .PP .B sed 的完整文档是作为Texinfo手册维护的。如果\fBinfo\fR和\fBsed\fR程序正确的安装, 可以执行 .IP .B info sed .PP 命令来访问完整的手册。 .SH "跋" .br 本页面中文版由中文 man 手册页计划提供。 .PP 翻译人员:Means Lee .br 翻译日期:2017-05-15 .br 原始软件:sed .br .br 中文 man 手册页计划:\fBhttps://github.com/man-pages-zh/manpages-zh\fR