这是 edposix 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
ed — 编辑文本
概要
ed [-p 绳子] [-s] [文件]
商品描述
这个 ed 实用程序是一个面向行的文本编辑器,它使用两种模式: 命令 模式 和 输入
模式. 在命令模式下,输入字符应被解释为命令,在输入
模式,它们应被解释为文本。 请参阅扩展说明部分。
如果一个操作数是 '-',结果未指定。
配置
这个 ed 实用程序应符合 POSIX.1-2008 的基本定义卷, 部分 12.2,
公用事业 句法 指南, 除了未指定的用法 '-'.
应支持以下选项:
-p 绳子 使用 VHDL 语言编写 绳子 作为命令模式时的提示字符串。 默认情况下,应该有
没有提示字符串。
-s 禁止写入字节计数 e, E, r和 w 命令和 '!
提示后!命令.
操作数
应支持以下操作数:
文件 如果 文件 给出论证, ed 应模拟一个 e 在名为的文件上的命令
通过路径名, 文件, 在接受来自标准输入的命令之前。
标准输入
标准输入应该是一个由命令组成的文本文件,如
扩展说明部分。
INPUT FILES
输入文件应为文本文件。
环境 变数
以下环境变量会影响执行 ed:
主页 确定用户主目录的路径名。
朗 为未设置或未设置的国际化变量提供默认值
空值。 (参见 POSIX.1-2008 的基本定义卷, 部分 8.2,
国际化 变量 为国际化优先
用于确定语言环境类别值的变量。)
LC_ALL 如果设置为非空字符串值,则覆盖所有其他字符串的值
国际化变量。
LC_COLLATE
确定范围、等价类和多变量行为的语言环境
正则表达式中的字符整理元素。
LC_CTYPE 确定用于解释文本数据字节序列的语言环境
作为字符(例如,单字节而不是多字节字符
参数和输入文件)以及常规中字符类的行为
表达式。
LC_消息
确定应该用于影响格式和内容的语言环境
写入标准错误的诊断消息和写入的信息性消息
到标准输出。
路径 确定用于处理的消息目录的位置 LC_消息.
异步 精彩活动
这个 ed 实用程序应对所有信号采取标准操作(请参阅异步事件
部分 部分 1.4, 公用事业 描述 默认值),但以下情况除外:
信号 ed 实用程序应中断其当前活动,写入字符串 “?\n” 至
标准输出,并返回到命令模式(请参阅扩展说明
部分)。
SIGHUP 如果缓冲区不为空并且自上次写入以来发生了变化,则 ed 效用
应尝试在文件中写入缓冲区的副本。 首先,文件名为
爱德华 在当前目录中应使用; 如果失败,文件名为
爱德华 在由该目录命名的目录中 主页 应使用环境变量。 在
无论如何, ed 实用程序应退出而不将文件写入当前
记住路径名并且不返回命令模式。
SIGQUIT ed 实用程序应忽略此事件。
标准输出
各种编辑命令和提示功能(见 -p) 写入标准输出,如
在扩展描述部分中进行了描述。
斯特德
标准错误应仅用于诊断消息。
OUTPUT FILES
输出文件应为文本文件,其格式取决于编辑命令
给定的。
EXTENDED 商品描述
这个 ed 实用程序应对其正在编辑的文件的副本进行操作; 对副本所做的更改
不会对文件产生影响,直到 w (write) 命令给出。 文本的副本
被称为 缓冲.
命令 ed 有一个简单而规则的结构:零、一或二 地址 其次
按单个字符 命令, 可能后跟该命令的参数。 这些
地址指定缓冲区中的一行或多行。 每个需要地址的命令
具有默认地址,因此地址通常可以省略。 如果 -p 选项
指定,提示字符串应在每个命令之前写入标准输出
阅读。
一般来说,一行只能出现一个命令。 某些命令允许文本
输入。 该文本被放置在缓冲区中的适当位置。 尽管 ed 正在接受
文字,据说在 输入 模式. 在这种模式下,不会识别任何命令; 全部
输入只是收集。 通过输入由两个组成的行来终止输入模式
人物:一个('。') 后跟一个. 这条线不被视为一部分
的输入文本。
原价 表达式 in ed
这个 ed 实用程序应支持基本的正则表达式,如 Base 中所述
POSIX.1-2008 的定义卷, 部分 9.3, 基础版 原价 表达式. 由于常规
表达在 ed 总是与单行匹配(不包括终止
字符),从不反对任何更大的文本部分,没有办法
正则表达式匹配一个.
空 RE 应等同于最后遇到的 RE。
正则表达式在地址中用于指定行,在某些命令中(例如
例如, s 替换命令)来指定要替换的行的部分。
地址 in ed
寻址 ed 与当前行有关。 一般当前行是最后一行
受命令影响。 当前行号是当前行的地址。 如果
编辑缓冲区不为空,当前行的初始值应为
编辑缓冲区; 否则,为零。
地址应构造如下:
1. 该特点 ('。') 应寻址当前行。
2. 该特点 ('$') 应寻址编辑缓冲区的最后一行。
3. 正十进制数 n 应解决 n编辑缓冲区的第 th 行。
4. 该-x 字符对 (“'X”) 应寻址标有 标记的行
名字字符 x, 应为可移植字符集中的小写字母。
如果字符未设置为标记行或行
被标记的当前不在编辑缓冲区中。
5. BRE 包含在人物 ('/') 应解决找到的第一行
从当前行之后的行向前搜索到编辑的结尾
缓冲并停在除终止行之外的第一行
匹配 BRE。 BRE 由由一对分隔的空 BRE 组成
字符应寻址下一行,该行不包括
终止匹配最后遇到的 BRE。 此外,第二
可以在命令行的末尾省略。 在 BRE 内,一个
—— 一对 (“\/”) 应代表文字而不是 BRE
分隔符。 如有必要,搜索应环绕到缓冲区的开头
并继续直到并包括当前行,以便整个缓冲区
搜索。
6. BRE 包含在人物 ('?) 应解决找到的第一行
通过从当前行之前的行向开始向后搜索
的编辑缓冲区,并在第一行停止
终止匹配 BRE。 BRE 由空 BRE 组成,由 a 分隔
双人物 (“??”) 应解决前一行
不包括终止行匹配最后遇到的 BRE。 在
另外,第二个可以在命令行的末尾省略。
在 BRE 内,一个—— 一对 (“\?”) 应代表文字
而不是 BRE 分隔符。 如有必要,搜索应换行
到缓冲区的末尾并继续直到并包括当前行,所以
搜索整个缓冲区。
7.A ('+') 或者特点 ('-') 后跟一个十进制数
地址当前行加减号。 一种或者特点
后面没有十进制数的地址应为当前行正负 1。
地址后可以跟零个或多个地址偏移量,可选-分开。
地址偏移的构造如下:
* 一种或者字符后跟十进制数应添加或
分别减去指定的进出地址的行数。 一种
标志> 或后面没有十进制数的字符应加或减 1
到或从地址。
* 十进制数应将指示的行数添加到地址中。
中间地址值小于零或大于不应该是错误
比编辑缓冲区中的最后一行。 最终地址值应该是错误的
小于零或大于编辑缓冲区中的最后一行。 应该是错误
如果搜索 BRE 未能找到匹配的行。
命令接受零、一或两个地址。 如果超过所需的地址数
提供给需要零地址的命令,它应该是一个错误。 除此以外,
如果提供给命令的地址数量超过所需数量,则地址
指定的首先应被评估,然后被丢弃,直到最大数量的有效
地址保留,用于指定的命令。
地址之间应由一个(',') 或者特点
(';')。 在一个分隔符,当前行('。') 应设置为
第一个地址,然后才计算第二个地址。 这个功能可以
用于确定向前和向后搜索的起跑线; 见规则 5。
和6。
地址可以在任何一侧省略或者分隔符,其中
如果结果地址对如下:
┌────────────┬──────────────┐
│指定 │ 结果 │
├──────────┼──────────────┤
│, │ 1 , $ │
│, 地址 │ 1 , 地址 │
│地址 , │ 地址 , 地址 │
│; │ . ; $ │
│; 地址 │ . ; 地址│
│地址; │ 地址 ; 地址│
└──────────┴──────────────┘
任何地址、地址分隔符或地址偏移之间包含的字符
将被忽略。
命令 in ed
在下面的列表中 ed 命令,默认地址显示在括号中。 这
默认显示的地址数应为命令预期的数量。 这
括号不是地址的一部分; 他们表明给定的地址是
默认。
在一行中出现多个命令通常是无效的。 然而,任何
命令(除了 e, E, f, q, Q, r, w和 !) 可以以字母为后缀 l, n或 p在
在这种情况下,除了 l, n和 p 命令,命令将被执行,然后
新的当前行应如下所述写入 l, n和 p 命令。
当 l, n或 p 后缀与 l, n或 p 命令,命令应写入
标准输出如下所述,但未指定后缀是否写入
当前行再次以请求的格式或后缀是否无效。 为了
例如, pl 命令(基 p 命令与 l suffix) 要么只写
当前行或将其写入两次——一次为指定的 p 并且一次按照规定 l。 另外,
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 g, G, v和 V 命令应将命令作为参数。
每个地址组件前面可以有零个或多个人物。 命令
字母前面可以有零个或多个人物。 如果后缀字母 (l, n或 p)
给出,应用程序应确保它立即遵循命令。
这个 e, E, f, r和 w 命令应采用可选的 文件 参数,与
一个或多个命令信人物。
如果缓冲区自上次发生变化 w 命令写了整个
缓冲区, ed 如果尝试通过以下方式破坏编辑器缓冲区,则应警告用户
e or q 命令。 这 ed 实用程序应写入字符串:
“?\n”
(后跟解释性消息,如果 帮助 模式 已通过 H 命令)到
标准输出并应继续在命令模式下保持当前行号不变。
如果 e or q 命令重复,无干预命令,生效。
如果终端断开连接(参见 POSIX.1-2008 的 Base Definitions 卷, 章节 11,
一般用途总体评估 终端 接口, Modem Disconnect and Closing a Device Terminal), 被检测到:
* 如果伴随着 SIGHUP 信号,则 ed 实用程序应按照
SIGHUP 信号的异步事件部分。
* 如果没有伴随着 SIGHUP 信号, ed 实用程序应充当文件结尾
已在标准输入上检测到。
如果在标准输入上检测到文件结尾:
* 如果 ed 实用程序处于输入模式, ed 应终止输入模式并返回到
命令模式。 未指定任何部分输入的行(即输入文本
没有终止) 从输入文本中被丢弃。
* 如果 ed 实用程序处于命令模式,它应该像一个 q 命令已输入。
如果 RE 或替换字符串的结束定界符(例如, '/')在一 g, G,
s, v或 V 命令将是 a 之前的最后一个字符,该分隔符可以是
省略,在这种情况下,应写入寻址行。 例如,以下
命令对是等效的:
秒/秒1/秒2 s/s1/s2/p
克/秒1 克/秒1/人
? ?
如果输入了无效的命令, ed 应写字符串:
“?\n”
(后跟解释性消息,如果 帮助 模式 已通过 H 命令)到
标准输出并应继续在命令模式下保持当前行号不变。
附加 命令
简介:
(。)一种
<文本>
.
这个 a 命令应读取给定的文本并将其附加在寻址行之后; 这
当前行号应成为最后插入行的地址,或者,如果有
无,寻址行。 地址 0 对该命令有效; 它会导致
要放置在缓冲区开头的附加文本。
更改 命令
简介:
(。,。)C
<文本>
.
这个 c 命令应删除寻址行,然后接受替换这些行的输入文本
线条; 当前行应设置为最后一行输入的地址; 或者,如果有
没有,在删除最后一行之后的行; 如果删除的行最初是
在缓冲区的末尾,将当前行号设置为新行的地址
最后一行; 如果缓冲区中没有剩余行,则当前行号应设置为零。
地址 0 对该命令有效; 它应被解释为好像地址 1 是
指定的。
删除 命令
简介:
(.,.)d
这个 d 命令应从缓冲区中删除寻址的行。 线路地址
删除的最后一行后应成为当前行号; 如果行被删除
最初在缓冲区的末尾,当前行号应设置为
新的最后一行的地址; 如果缓冲区中没有剩余行,则当前行号
应设置为零。
编辑 命令
简介:
e [文件]
这个 e 命令应删除缓冲区的全部内容,然后读入文件
由路径名命名 文件. 当前行号应设置为
缓冲区的最后一行。 如果没有给出路径名,当前记住的路径名,如果
任何,应使用(见 f 命令)。 读取的字节数应写入
标准输出,除非 -s 选项已指定,格式如下:
"%d\n", <数 of 字节 读>
拼音作为的姓名 文件 应记住,以便在后续可能用作默认路径名 e,
E, r和 w 命令。 如果 文件 被替换 '!,该行的其余部分将被带到
是一个 shell 命令行,其输出将被读取。 这样的 shell 命令行不得
被记住为当前 文件. 完成一次后,所有标记将被丢弃
乳铁蛋白 e 命令。 如果缓冲区自上次整个缓冲区已更改
写,用户将被警告,如前所述。
编辑 没有 检查 命令
简介:
E [文件]
这个 E 命令应拥有所有属性和限制 e 命令除了
编辑器不应该检查缓冲区是否有任何更改
最后 w 命令。
文件名 命令
简介:
f [文件]
If 文件 给定, f 命令应将当前记住的路径名更改为 文件;
无论名称是否更改,它都应写入当前的(可能是新的)
以以下格式记住标准输出的路径名:
"%s\n", <路径名>
当前行号应保持不变。
全球覆盖 命令
简介:
(1,$)克/RE/命令 名单
在 g 命令,第一步应该是标记每一行,其中的行不包括
终止匹配给定的 RE。 然后,依次从
文件开头到文件结尾,给定的 命令 名单 应为
每个标记的行,当前行号设置为该行的地址。 任意线路
被修改 命令 名单 将被取消标记。 当。。。的时候 g 命令完成,当前
行号应具有由最后一个命令分配的值 命令 名单。 如果
没有匹配的行,当前行号不得更改。 一个
命令或命令列表中的第一个应与全局命令出现在同一行
命令。 多行列表中除最后一行外的所有行都应以
在终止之前; 这 a, i和 c 命令和相关的
允许输入。 这 '。' 终止输入模式可以省略,如果它是
最后一行 命令 名单. 一个空的 命令 名单 应等于 p 命令。
使用的 g, G, v, V和 ! 命令在 命令 名单 产生未定义的结果。
除了或者可以用来代替划界
那里。 在 RE 中,RE 定界符本身可以用作文字字符,如果它是
前面有一个.
互动 全球覆盖 命令
简介:
(1,$)G/RE/
在 G 命令,第一步应该是标记每一行,其中的行不包括
终止匹配给定的 RE。 然后,对于每个这样的行,该行将
写入,当前行号应设置为该行的地址,任何一个
命令(除了其中之一 a, c, i, g, G, v和 V 命令)应被读取和
执行。 一种应作为一个空命令(导致不采取任何行动
当前行); 一个 '&' 将导致重新执行最近的非空命令
在当前调用中执行 G. 请注意,作为输入的命令的一部分
执行 G 命令可以寻址和影响缓冲区中的任何行。 任意线路
由命令修改的应取消标记。 当前行号的最终值
应为最后成功执行的命令设置的值。 (注意最后
成功执行的命令应该是 G 如果命令失败或为空,则命令本身
命令被指定。)如果没有匹配的行,则当前行号不应
被改变。 这 G 命令可以由 SIGINT 信号终止。 除了
或者可以用来代替分隔 RE 和
替代品。 在 RE 中,RE 定界符本身可以用作文字字符,如果
它前面有一个.
帮助 命令
简介:
h
这个 h 命令应向标准输出写一条短消息,解释原因
最近的 '? 通知。 当前行号应保持不变。
帮助模式 命令
简介:
H
这个 H 命令将导致 ed 进入显示帮助消息的模式(请参阅 h 命令)
应写入所有后续的标准输出 '? 通知。 这 H 命令
交替打开和关闭此模式; 它最初是关闭的。 如果帮助模式是
被打开, H 命令也解释了前面的 '? 通知,如果有
一。 当前行号应保持不变。
插页 命令
简介:
(。)一世
<文本>
.
这个 i 命令应在寻址行之前插入给定的文本; 当前行是
设置为最后插入的行,如果没有,则设置为寻址的行。 这个命令
与 a 命令只在输入文本的位置。 地址 0 应为
对本命令有效; 它应被解释为好像指定了地址 1。
加入 命令
简介:
(.,.+1)j
这个 j 命令应通过删除适当的连接来连接连续的行
人物。 如果只给出了一个地址,则该命令将不执行任何操作。 如果线条是
加入,当前行号设置为加入行的地址; 除此以外,
当前行号应保持不变。
纪念 命令
简介:
(.)kx
这个 k 命令应使用名称标记寻址行 x, 申请应
确保是来自可移植字符集的小写字母。 地址 “'X” 那么将
参考这一行; 当前行号应保持不变。
列表 命令
简介:
(.,.)l
这个 l 命令应以视觉上明确的方式将寻址行写入标准输出
形式。 POSIX.1-2008 的 Base Definitions 卷中列出的字符, 表 5-1,
逃生 序列 和 关联的 行动 ('\\', '\一种', '\b', '\F', '\r', '\t', '\v') 将
写成对应的转义序列; 这 '\n' 在该表中不适用。
不在表中的不可打印字符应写为一个三位八进制数
(前面有字符)对于字符中的每个字节(最重要的
字节优先)。
长线要折叠,折叠点用前面有一个
; 折叠发生的长度未指定,但应该是合适的
对于输出设备。 每行的末尾应标有 '$'和 '$' 字符
在正文中应写有前面的. 一个 l 命令可以是
附加到除 e, E, f, q, Q, r, w或 !. 当前行
number 应设置为最后一行写入的地址。
移动 命令
简介:
(.,.)米地址
这个 m 命令应在被寻址的行之后重新定位被寻址的行 地址.
地址 0 的有效期为 地址 并使寻址的行移动到
缓冲区的开始。 如果地址是错误的 地址 落在范围内
移动的线条。 当前行号应设置为最后移动行的地址。
联系电话 命令
简介:
(.,.)n
这个 n 命令应将寻址行写入标准输出,在每行之前
它的行号和一个; 当前行号应设置为
写的最后一行。 这 n 命令可以附加到除 e, E, f, q, Q,
r, w或 !.
打印 命令
简介:
(.,.)p
这个 p 命令应将寻址行写入标准输出; 当前行号
应设置为写入的最后一行的地址。 这 p 命令可以附加到任何
命令以外 e, E, f, q, Q, r, w或 !.
提示 命令
简介:
P
这个 P 命令将导致 ed 提示('*') (或者 绳子如果 -p is
指定)用于所有后续命令。 这 P 命令或者应打开此模式
开和关; 如果 -p 选项已指定; 否则,关闭。 这
当前行号应保持不变。
退出 命令
简介:
q
这个 q 命令将导致 ed 退出。 如果缓冲区自上次以来发生了变化
整个缓冲区被写入,用户将被警告,如前所述。
退出 没有 检查 命令
简介:
Q
这个 Q 命令将导致 ed 退出而不检查是否已进行更改
自上次以来的缓冲区 w 命令。
阅读 命令
简介:
($)r [文件]
这个 r 命令应读入由路径名命名的文件 文件 并将其附加在
寻址线。 如果不 文件 给出参数,当前记住的路径名,如果有的话,
应使用(见 e 和 f 命令)。 当前记住的路径名不应是
除非没有记住路径名。 地址 0 的有效期为 r 并应
导致在缓冲区的开头读取文件。 如果读取成功,并且
-s 未指定,读取的字节数应写入标准输出
以下格式:
"%d\n", <数 of 字节 读>
当前行号应设置为读入的最后一行的地址。如果 文件 is
取而代之 '!, 该行的其余部分应被视为一个 shell 命令行,其
要读取输出。 这样的 shell 命令行不应被记住为当前的
路径名。
替代 命令
简介:
(.,.)s/RE/替代/标志
这个 s 命令应搜索每个寻址的行中是否出现指定的 RE 和
将第一个或所有(非重叠)匹配的字符串替换为 替代; 看到
下面的描述 g 后缀。 如果替换失败,则为错误
每个寻址的行。 除了或者可以用来代替
一种分隔 RE 和替换。 在 RE 中,RE 定界符本身
可以用作文字字符,如果它前面有一个. 当前行
应设置为发生替换的最后一行的地址。
一个('&') 出现在 替代 应替换为匹配的字符串
当前行上的 RE。 的特殊意义 '&' 在这种情况下可以被抑制
通过在它之前. 作为一个更普遍的特征,字符 '\n',在 Moku:Pro 上 n
是一个数字,应由对应的反向引用匹配的文本替换
表达。 如果对应的反向引用表达式不匹配,则
字符 '\n' 应替换为空字符串。 当人物 '%' 是唯一的
中的人物 替代, 替代 在最近的替代命令中使用
应用作 替代 在当前替换命令中; 如果没有
先前的替换命令,使用 '%' 以这种方式将是一个错误。 这 '%'
当它在一个以上的替换字符串中时将失去其特殊含义
字符或前面有一个. 对于每个扫描中遇到
替代 以下字符自始至终失去其特殊意义
(如果有的话)。 未指定任何字符的特殊含义,除了
, '&', '%', 或数字。
可以通过替换一个来分割一条线进去。 申请应确保
逃脱在里面 替代 通过在它之前. 这样的
替代不能作为 g or v 命令 名单. 当前行号
应设置为执行替换的最后一行的地址。 如果不
执行替换后,当前行号应保持不变。 如果一条线被分割,
应认为已对每个新行进行了替换
确定新的当前行号的目的。 应考虑替换
即使替换字符串与它的字符串相同,也已执行
代替。
申请应确保价值 标志 是零个或多个:
数 代替 数仅在每个寻址行上找到的 RE 的第 th 次出现。
g 全局替换 RE 的所有非重叠实例,而不仅仅是
第一个。 如果两者 g 和 数 已指定,结果未指定。
l 将进行替换的最后一行写入标准输出。 线
应按规定的格式书写 l 命令。
n 将进行替换的最后一行写入标准输出。 线
应按规定的格式书写 n 命令。
p 将进行替换的最后一行写入标准输出。 线
应按规定的格式书写 p 命令。
复制 命令
简介:
(.,.)t地址
这个 t 命令应等同于 m 命令,除了地址的副本
行应放在地址之后 地址 (可以是 0); 当前行号
应设置为添加的最后一行的地址。
解开 命令
简介:
u
这个 u 命令将使修改任何内容的最近命令的效果无效
在缓冲区中,即最近的 a, c, d, g, i, j, m, r, s, t, u, v, G或 V 命令。
由 a 对缓冲区所做的所有更改 g, G, v或 V 全局命令应作为
单一变化; 如果全局命令没有进行任何更改(例如 g/关于/p),则 u
命令无效。 当前行号应设置为它的值
在命令被撤消之前立即开始。
全球覆盖 不匹配 命令
简介:
(1,$)v/RE/命令 名单
该命令等同于全局命令 g 除了那些是
在第一步中标记的应该是那些不包括终止行的行
与 RE 不匹配。
互动 全球覆盖 不匹配 命令
简介:
(1,$)V/RE/
该命令等同于交互式全局命令 G 除了线条
在第一步中标记的应该是那些不包括
终止与 RE 不匹配。
填写 命令
简介:
(1,$)w [文件]
这个 w 命令应将寻址的行写入由路径名命名的文件中 文件.
该命令将创建该文件,如果它不存在,或应替换内容
现有文件。 当前记住的路径名不得更改,除非有
没有记住的路径名。 如果没有给出路径名,当前记住的路径名,如果
任何,应使用(见 e 和 f 命令); 当前行号应保持不变。
如果命令成功,写入的字节数将写入标准
输出,除非 -s 选项已指定,格式如下:
"%d\n", <数 of 字节 书面>
If 文件 开始于 '!, 该行的其余部分应被视为 shell 命令行
其标准输入应为寻址行。 这样的 shell 命令行不得
记住为当前路径名。 write 命令的这种用法与 '! 不得
被认为是“最后 w 写入整个缓冲区的命令'',如前所述;
因此,如果试图这样做,仅此一项并不能阻止向用户发出警告
通过销毁编辑器缓冲区 e or q 命令。
LINE 联系电话 命令
简介:
($)=
寻址行的行号应写入标准输出,如下所示
格式:
"%d\n", <线 数>
该命令不会改变当前行号。
外壳 逃生 命令
简介:
!命令
之后的行的其余部分 '! 应发送到命令解释器
解释为 shell 命令行。 在该 shell 命令行的文本中,
未转义字符 '%' 应替换为记住的路径名; 如果一个 '! 出现
作为命令的第一个字符,应替换为前一个字符的文本
通过执行shell命令 '!。 从而, “!” 重复之前的!命令. 如果有的话
的替代品 '%' or '! 执行后,修改后的行应写入
之前的标准输出 命令 被执行。 这 ! 命令应写:
“!\n”
完成后到标准输出,除非 -s 选项被指定。 当前行
号码不变。
空 命令
简介:
(.+1)
一行中单独的地址将导致写入寻址的行。 一种独自的
应等于 “+1p”. 当前行号应设置为
书面线。
退出 状态
应返回以下退出值:
0 成功完成,没有任何文件或命令错误。
>0 发生错误。
后果 OF 错误
当遇到输入脚本中的错误时,或检测到错误时
数据(不)存在于文件中的结果或由于外部条件,例如
读取或写入错误:
* 如果标准输入是终端设备文件,则所有输入都将被刷新,并创建一个新的
命令读取。
* 如果标准输入是普通文件, ed 应以非零退出终止
状态。
这个 以下 部分 旨在 内容丰富。
申请须知 用法
由于默认错误消息的极其简洁的性质,谨慎的脚本
作家开始 ed 输入命令 H 命令,以便在发生任何错误时
至少有一些关于原因的线索是可用的。
在本标准的早期版本中,一个过时的 - 选项进行了描述。 这不是
更长的指定。 应用程序应使用 -s 选项。 使用 - 作为一个 文件 现在操作数
产生未指定的结果。 这允许实现继续支持
以前要求的行为。
示例
无。
基本原理
此实用程序的初始描述改编自 SVID。 它包含一些
版本 7 或 BSD 派生系统中没有的功能。 之间的一些差异
POSIX 和 BSD ed 实用程序包括但不限于:
* BSD - 选项不会抑制 '! 提示后 ! 命令。
* BSD 不支持特殊含义的 '%' 和 '! 内的字符 !
命令。
* BSD 不支持 地址 ';' 和 ','.
* BSD 允许命令/后缀对 pp, ll,等等,这些在这个中未指定
POSIX.1-2008 卷。
* BSD 不支持 '! 字符部分 e, r或 w 命令。
* 失败 g BSD 中的命令将行号设置为搜索的最后一行,如果有
无匹配。
* BSD 不默认 命令 名单 以及 p 命令。
* BSD 不支持 G, h, H, n或 V 命令。
* 在 BSD 上,如果没有插入文本,则插入命令将当前行更改为
参考线-1; 即指定行之前的行。
* 在 BSD 上, 加入 只有一个地址的命令会将当前行更改为
地址。
* BSD 不支持 P 命令; 此外,在 BSD 中它是同义词 p
命令。
* BSD 不支持 复原 命令的 j, m, r, s或 t.
* 版本 7 ed 命令 W, 和 BSD ed 命令 W, wq和 z 不存在
本卷 POSIX.1-2008。
这个 -s 添加了选项以允许删除的功能 - 以某种方式选择
与实用程序语法指南兼容。
在早期的提案中有一个限制,{ED_FILE_MAX},描述了历史
一些限制 ed 处理大文件的实用程序; 其中一些已经
文件大于 100000 字节的问题。 正是这种限制促使许多
想要包括一个 分裂 本卷 POSIX.1-2008 中的命令。 由于这个限制是
删除,这卷 POSIX.1-2008 要求实现记录文件大小
施加的限制 ed 在一致性文件中。 限制 {ED_LINE_MAX} 也是
移除; 因此,全局限制 {LINE_MAX} 用于输入和输出线。
的方式 l 命令写入不可打印的字符已更改以避免
历史退格重击方法。 在视频显示终端上,重击是
模棱两可,因为大多数终端只是简单地替换重击字符,使得 l 格式
对明确理解内容的预期目的没有用
线。 历史的-escapes 也是模棱两可的。 (字符串 “一个\0011” 可以
表示包含这六个字符的行或包含三个字符的行
'一种', 一个二进制值为 1 的字节和一个 1。) 在此处要求的格式中,一个
出现在该行被写为 “\” 以便输出真正明确。 这
标记线端的方法是从 ex 编辑器,对于任何
行结束于人物; 这 '$' 放置在所有行上,以便真实 '$' at
一行的结尾不能被误解。
该标准的早期版本允许使用八字节以外的字节实现
位,但这已在此版本中进行了修改。
删除了如何写入 NUL 的描述。 NUL 字符不能在文本中
文件,并且这卷 POSIX.1-2008 不应规定在以下情况下的行为
未定义的错误输入。
与其他一些编辑实用程序不同, E, e, R和 r
命令不是模式。
早期的提案指出, -p 选项仅在关联标准输入时有效
带终端设备。 这已更改为符合历史实现,
从而允许应用程序在用户和 ed 效用。
使用的替代命令的形式 n 后缀在某些历史上受到限制
文档(这里被错误地描述为“反向引用”)。 这个限制
已被省略,因为编辑器没有理由处理 {LINE_MAX} 行
长度应该有这个限制。 命令 s/x/x/2047 应该可以替代
第 2047 次发生 'x' 在一条线上。
使用带有打印后缀的打印命令(例如 pn, lp, 等等) 被制作
未指定,因为基于 BSD 的系统允许这样做,而 System V 不允许。
一些基于 BSD 的系统在收到文件结束符后立即退出,如果
该文件已被删除。 由于这卷 POSIX.1-2008 指的是 q 命令输入
在这种情况下,这种行为是不允许的。
一些历史实现返回退出状态零,即使命令错误有
发生了; 这在 POSIX.1-2008 卷中是不允许的。
一些历史实现包含一个错误,允许单个成为
在输入模式下输入为. 这是不允许的 ed
因为没有在输入模式下转义任何字符的描述;
字符完全按照键入的方式输入缓冲区。 的典型方法
输入一个一直在它前面加上另一个字符,然后使用
替换命令删除该字符。
在某些版本的历史操作系统终端的某些模式下很难
驱动程序来区分文件结束条件和终端断开连接。
POSIX.1-2008 不需要实现来区分这两种情况,
这允许历史实现 ed 在历史平台上的实用程序
符合。 如果可能,鼓励实现区分两者,并且
对终端断开采取适当的措施。
从历史上看, ed 接受零地址 a 和 r 命令以插入文本
在编辑缓冲区的开头。 当缓冲区为空时,命令 .= 返回零。
POSIX.1-2008 要求符合历史惯例。
为了与 a 和 r 命令和更好的用户功能, i 和 c
命令还必须接受地址 0,在这种情况下为 0i 被视为 1i 同样
等加工。为 c 命令。
以下所有地址都是有效地址:
+++ 当前行后三行。
/模式/- 下一次出现模式之前的一行。
−2 当前行前两行。
3 −−−− 2 第一行(注意中间负地址)。
1 2 3 第六行。
可以为获取地址的命令提供任意数量的地址; 例如,
“1,2,3,4,5p” 打印第 4 行和第 5 行,因为 XNUMX 是最大的有效地址数
被接受 打印 命令。 这与结合分隔符,
允许用户根据文件中的有序模式创建命令。 例如,
命令 "3;/foo/;+2p" 将显示包含模式的第 3 行之后的第一行
FOO, 加上接下来的两行。 注意地址 “3;” 仍然必须在评估之前
被丢弃,因为搜索源 “/foo/” 命令取决于此。
从历史上看, ed 不允许的地址链,如上所述,仅由
或者分隔符; 例如, “,,,” or ";;;" 被认为是一个错误。
为了地址规范的一致性,删除了此限制。 下表
列出了一些现在可能的地址形式:
┌────────┬──────────┬────────┬────────────┬──────────── ──────────────┐
│门店地址 │ 地址1 │ 地址2 │ 状态 │ 评论 │
├────────┼───────┼───────┼────────────┼──────────── ──────────────┤
│7, │ 7 │ 7 │ 历史│ │
│7,5, │ 5 │ 5 │ 历史│ │
│7,5,9 │ 5 │ 9 │ 历史 │ │
│7,9 │ 7 │ 9 │ 历史 │ │
│7,+ │ 7 │ 8 │ 历史 │ │
│, │ 1 │ $ │ 历史│ │
│,7 │ 1 │ 7 │ 扩展 │ │
│,, │ $ │ $ │ 扩展名 │ │
│,; │ $ │ $ │ 扩展名 │ │
│7; │ 7 │ 7 │ 历史│ │
│7;5; │ 5 │ 5 │ 历史│ │
│7;5;9 │ 5 │ 9 │ 历史 │ │
│7;5,9 │ 5 │ 9 │ 历史 │ │
│7;$;4 │ $ │ 4 │ 历史 │ 有效,但错误。 │
│7;9 │ 7 │ 9 │ 历史 │ │
│7;+ │ 7 │ 8 │ 历史 │ │
│; │ . │ $ │ 历史 │ │
│;7 │ . │ 7 │ 扩展 │ │
│;; │ $ │ $ │ 扩展名 │ │
│;, │ $ │ $ │ 扩展名 │ │
└────────┴─────────┴───────┴────────────┴──────────── ──────────────┘
从历史上看, ed 接受了 '^' 字符作为地址,在这种情况下它是相同的
到特点。 POSIX.1-2008 不要求或禁止这种行为。
未来 如何前往
无。
使用 onworks.net 服务在线使用 edposix