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