GoGPT Best VPN GoSearch

OnWorks 网站图标

sedposix - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 sedposix

这是 sedposix 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


sed — 流编辑器

概要


口渴 [-n] 脚本 [文件...]

口渴 [-n] -e 脚本 [-e 脚本]... [-f 脚本文件]... [文件...]

口渴 [-n] [-e 脚本]... -f 脚本文件 [-f 脚本文件]... [文件...]

商品描述


这个 口渴 实用程序是一种流编辑器,可以读取一个或多个文本文件,进行编辑
根据编辑命令的脚本进行更改,并将结果写入标准
输出。 脚本应从 脚本 操作数字符串或
选项参数的组合 -e 脚本-f 脚本文件 选项​​。

配置


这个 口渴 实用程序应符合 POSIX.1-2008 的基本定义卷, 部分
12.2, 公用事业 句法 指南,除了呈现的顺序 -e-f
选项很重要。

应支持以下选项:

-e 脚本 添加指定的编辑命令 脚本 选项参数到末尾
编辑命令的脚本。

-f 脚本文件
在文件中添加编辑命令 脚本文件 到脚本的结尾
编辑命令。

-n 抑制默认输出(其中每一行,在检查之后
编辑,写入标准输出)。 只有明确选择的行
输出被写入。

如果有的话 -e or -f 选项被指定,编辑命令的脚本最初应该是
空的。 每个指定的命令 -e or -f 选项应添加到脚本中
指定的顺序。 每次添加时,如果前一次添加(如果有)来自
-e 选项,一个应插入在新添加之前。 结果脚本
应具有相同的属性 脚本 操作数,在操作数部分描述。

操作数


应支持以下操作数:

文件 读取和编辑其内容的文件的路径名。 如果多个 文件
操作数被指定,命名的文件应该按照指定的顺序读取并且
应编辑串联。 如果不 文件 操作数被指定,
应使用标准输入。

脚本 用作编辑命令脚本的字符串。 申请不得
提出一个 脚本 违反文本文件的限制,除了
最后一个字符不必是.

标准输入


如果没有,则应使用标准输入 文件 操作数被指定,并且应该在以下情况下使用
文件 操作数是 '-' 和实现对待 '-' 作为标准输入的意思。
否则,不得使用标准输入。 请参阅输入文件部分。

INPUT FILES


输入文件应为文本文件。 这 脚本文件s 由 -f 选项应包括
的编辑命令。

环境 变数


以下环境变量会影响执行 口渴:

为未设置或未设置的国际化变量提供默认值
空值。 (参见 POSIX.1-2008 的基本定义卷, 部分 8.2,
国际化 变量 为国际化优先
用于确定语言环境类别值的变量。)

LC_ALL 如果设置为非空字符串值,则覆盖所有其他字符串的值
国际化变量。

LC_COLLATE
确定范围、等价类和多变量行为的语言环境
正则表达式中的字符整理元素。

LC_CTYPE 确定用于解释文本数据字节序列的语言环境
作为字符(例如,单字节而不是多字节字符
参数和输入文件),以及常规中字符类的行为
表达式。

LC_消息
确定应该用于影响格式和内容的语言环境
写入标准错误的诊断消息。

路径 确定用于处理的消息目录的位置 LC_消息.

异步 精彩活动


默认。

标准输出


输入文件应写入标准输出,并指定编辑命令
在应用的脚本中。 如果 -n 选项被指定,只有那些被选中的输入行
脚本应写入标准输出。

斯特德


标准错误应仅用于诊断消息。

OUTPUT FILES


输出文件应为文本文件,其格式取决于编辑命令
给定的。

EXTENDED 商品描述


这个 脚本 应由以下形式的编辑命令组成:

[地址[,地址]]function

协调 function 表示列表中的单字符命令动词 编辑
命令 in 口渴, 后跟任何适用的参数。

该命令可以在前面字符和/或人物。 这
函数可以在前面人物。 这些可选字符不得有
效果。

在默认操作中, 口渴 循环应附加一行输入,减去其终止
字符,进入模式空间。 如果出现以下情况,则应跳过从输入读取
在模式空间之前 D 命令结束上一个循环。 这 口渴
然后实用程序应按顺序应用其地址选择该模式的所有命令
空格,直到命令开始下一个循环或退出。 如果没有命令显式启动
新循环,然后在脚本结束时,模式空间应复制到标准
输出(除了当 -n 被指定),模式空间将被删除。 每当
模式空间被写入标准输出或命名文件, 口渴 应立即跟进
它与.

一些编辑命令使用保留空间来保存全部或部分模式空间
后续检索。 模式和容纳空间应各自至少能容纳 8192
个字节。

地址 in 口渴
地址要么是一个十进制数,它对跨文件的输入行进行累计计数,要么是一个
'$' 处理输入的最后一行的字符,或上下文地址(由
的 BRE,如 原价 表达式 in 口渴, 之前和之后是
分隔符,通常是一个)。

没有地址的编辑命令应选择每个模式空间。

具有一个地址的编辑命令应选择每个匹配的模式空间
地址。

具有两个地址的编辑命令应选择第一个包含的范围
匹配第一个地址的模式空间到匹配的下一个模式空间
第二。 (如果第二个地址是小于等于第一个行号的数字
选择,只应选择一行。)从后面的第一行开始
选定的范围, 口渴 将再次查找第一个地址。 此后,该过程应
被重复。 省略以下形式中的一个或两个地址组件
产生未定义的结果:

[地址[,地址]]

原价 表达式 in 口渴
这个 口渴 实用程序应支持基本定义卷中描述的 BRE
POSIX.1-2008, 部分 9.3, 基础版 原价 表达式, 增加了以下内容:

* 在上下文地址中,构造 "\cBREc",在 Moku:Pro 上 c 是除
或者, 应等同于 "/BRE/". 如果字符指定
by c 出现在一个,那么它应该被认为是文字
字符,不应终止 BRE。 例如,在上下文地址
"\xabc\xdefx", 第二 x 代表自身,因此 BRE 是 “abcxdef”.

* 转义序列 '\n' 应匹配一个嵌入模式空间。 一种
文字不得用于上下文地址的 BRE 或
替代功能。

* 如果 RE 为空(即没有指定模式) 口渴 应该表现得好像最后一个
上一个应用命令中使用的 RE(作为地址或替代的一部分)
命令)被指定。

编辑 命令 in 口渴
在下面的编辑命令列表中,允许的最大地址数
每个功能由 [ 表示0地址],[1地址], 或者 [2地址],代表零、一或二
地址。

论据 文本 应由一行或多行组成。 每个嵌入式在文中
前面应有一个. 其他文本中的字符应为
删除,以下字符应按字面处理。

这个 rw 命令动词,以及 w 标记到 s 命令,采取 文件 (或 文件)
参数,与命令动词字母或标志用一个或多个分隔
人物; 实现可以允许零分离作为扩展。

论据 文件 或论点 文件 应终止编辑命令。 每个 文件
应在处理开始之前创建。 实现应至少支持十个
文件 脚本中的参数; 实际数量(大于或等于 10)
支持的实现是未指定的。 使用 文件 参数将导致
最初创建的那个文件,如果它不存在,或者应该替换它的内容
一个现有的文件。

这个 b, r, s, t, w, y: 命令动词应接受额外的参数。 下列
概要指示哪些参数应与命令动词分开
.

这个 ar 命令为以后的输出安排文本。 指定的文本 a 命令,
和指定的文件内容 r 命令,应写入标准
在执行下一次尝试获取一行输入之前的输出 N or n
命令,或到达脚本末尾时。 如果在到达末尾时写入
脚本,以及 -n 未指定选项,文本应在复制后编写
模式空间到标准输出。 指定的文件内容 r 命令
应为写入输出的时间,而不是写入的时间 r 命令被应用。 这
文本应按顺序输出 ar 命令已应用于输入。

命令动词以外 {, a, b, c, i, r, t, w, :# 可以跟一个
, 可选的字符和另一个命令动词。 然而,当 s
命令动词与 w 标志,以这种方式跟随另一个命令
产生未定义的结果。

一个函数前面可以有一个或多个 '! 字符,在这种情况下,函数
如果地址未选择模式空间,则应应用。 零个或多个
字符应在第一个之前被接受 '! 特点。 未指明是否
字符可以跟随一个 '! 性质,符合要求的应用程序不得
跟随 '! 字符与人物。

[2地址] {编辑 命令

编辑 命令

...

} 执行列表 口渴 仅在选择模式空间时编辑命令。
的列表中 口渴 编辑命令应用大括号括起来并用
字符,并符合以下规则。 大括号可以是
之前或之后人物。 编辑命令可以放在前面
经过字符,但后面不能跟人物。 这
前面应有一个并且可以在前面或后面
经过人物。

[1地址]一种\

文本 如前所述将文本写入标准输出。

[2地址]b [标签]
分支到 : 功能承载 标签。 如果 标签 未指定,分支
到脚本的结尾。 实施应支持 标签s 被认为是
至少 8 个字符的唯一性; 实际长度(大于或等于
8) 应由实施支持的未指定。 这是
未指定超出标签长度是否会导致错误或无提示
截断。

[2地址]C\

文本 删除模式空间。 带有 0 或 1 地址或位于 2 地址的末尾
范围,地点 文本 在输出上并开始下一个循环。

[2地址]d 删除模式空间并开始下一个循环。

[2地址]D 如果模式空间不包含, 删除模式空间并启动一个
正常的新周期好像 d 命令发出。 否则,删除初始
模式空间的一部分通过第一个,然后开始下一个
在不读取任何新输入的情况下循环结果模式空间。

[2地址]g 用保持空间的内容替换模式空间的内容。

[2地址]G 追加到模式空间a 接着是hold的内容
空间。

[2地址]h 用模式空间的内容替换保持空间的内容。

[2地址]H 附加到保持空间 a 后跟模式的内容
空间。

[1地址]一世\

文本 填写 文本 到标准输出。

[2地址]l (字母 ell。)以视觉方式将模式空间写入标准输出
明确的形式。 基本定义卷中列出的字符
POSIX.1-2008, 5-1, 逃生 序列 关联的 行动 ('\\', '\一种',
'\b', '\F', '\r', '\t', '\v') 应写为相应的转义
序列; 这 '\n' 在该表中不适用。 不可打印的字符
在该表中应写成一个三位数的八进制数(前面有一个
) 对于字符中的每个字节(最重要的字节在前)。

长线要折叠,折叠点用写一个
紧接着一个; 发生折叠的长度是
未指定,但应适用于输出设备。 每个的结束
行应标有 '$'.

[2地址]n 如果默认输出没有被写入,则将模式空间写入标准输出
抑制,并用下一行输入替换模式空间,减去它的
终止.

如果没有可用的下一行输入,则 n 命令动词应分支到
结束脚本并退出而不开始新的循环。

[2地址]N 追加下一行输入,减去其终止, 到模式
空间,使用嵌入式将附加材料与
原始材料。 请注意,当前行号会发生变化。

如果没有可用的下一行输入,则 N 命令动词应分支到
结束脚本并退出而不开始新的循环或复制模式
标准输出的空间。

[2地址]p 将模式空间写入标准输出。

[2地址]P 写模式空间,直到第一个, 到标准输出。

[1地址]q 分支到脚本的末尾并退出而不开始新的循环。

[1地址]r 文件
复制内容 文件 到前面描述的标准输出。 如果 文件
不存在或无法读取,应视为空
文件,导致没有错误情况。

[2地址]秒/BRE/替代/标志
替换模式空间中 BRE 实例的替换字符串。
除了或者可以用来代替
分隔 BRE 和替换。 在 BRE 和
替换,如果 BRE 分隔符本身可以用作文字字符
前面有一个.

替换字符串应从头到尾扫描。 一个
('&') 出现在替换中的应由匹配的字符串替换
布雷。 的特殊意义 '&' 在这种情况下可以通过前面的
它由一个. 那些角色 ”\n",在 Moku:Pro 上 n 是一个数字,应该被替换
通过与相应的反向引用表达式匹配的文本。 如果
对应的反向引用表达式不匹配,则字符“\n"
应替换为空字符串。 “\”的特殊含义n" 协调 n 是一个
数字在这种情况下,可以通过在它前面加上一个. 为了
彼此遇到,以下字符将丢失
特殊含义(如果有)。 一个的意思紧接着
除了 '&', 、数字或分隔符
用于此命令,未指定。

可以通过替换一个来分割一条线进去。 申请须
逃离在替换之前加上一个. 一种
即使进行了替换,也应视为已执行替换
字符串与它替换的字符串相同。 任何曾经
更改后续字符的默认含义应从
在评估 BRE 或使用替代品之前,BRE 或替代品。

价值 标志 应为零或多个:

n 代替 n第 th 次仅在 BRE 中发现
图案空间。

g 全局替换 BRE 的所有非重叠实例
而不仅仅是第一个。 如果两者 gn 被指定,
结果未指定。

p 如果进行了替换,则将模式空间写入标准输出。

w 文件 写。 将模式空间附加到 文件 如果更换了。 一种
符合要求的申请应先于 文件 与一个或
更多的人物。 如果 w 标志不是最后一个标志值
在多个标志值的串联中给出,结果是
不明确的。

[2地址]t [标签]
测试。 分支到 : 命令动词带有 标签 如果有任何替换
自从最近一次读取输入行或执行 t.
If 标签 未指定,分支到脚本的末尾。

[2地址]w 文件
将模式空间附加(写入)到 文件.

[2地址]x 交换模式的内容并保留空格。

[2地址]y/string1/string2/
替换所有出现的字符 string1 与相应的
中的字符 string2. 如果一个紧随其后的是 'N' 出现在 string1 or
string2, 两个字符应作为一个单独处理. 如果
中的字符数 string1string2 不相等,或者如果
中的字符 string1 出现不止一次,结果是不确定的。 任何
字符以外或者可以用来代替到
分隔字符串。 如果分隔符不是 'N', 中 string1string2,
分隔符本身可以用作文字字符,如果它前面有一个
. 如果一个字符后紧跟一个
字符在 string1 or string2, 他们俩人物
应算作单个文字特点。 一个的意思
后跟任何不是的字符 'N', 一种, 或者
分隔符未定义。

[0地址]:标签
没做什么。 该命令带有 标签 到哪个 bt 命令分支。

[1地址]= 将以下内容写入标准输出:

"%d\n", <当前 线 >

[0地址] 忽略这个空命令。

[0地址]# 忽略 '#' 以及该行的其余部分(将它们视为注释),使用
唯一的例外是,如果脚本中的前两个字符是 “#n”
默认输出应被抑制; 这应等同于指定
-n 在命令行上。

退出 状态


应返回以下退出值:

0 成功完成。

>0 发生错误。

后果 OF 错误


默认。

这个 以下 部分 旨在 内容丰富。

申请须知 用法


正则表达式匹配整个字符串,不仅仅是单个行,而是一个是
匹配 '\n' 育明在 口渴 关于; 一种一般定义不允许
POSIX.1-2008 中的正则表达式。 还要注意的是 '\n' 不能用于匹配
在任意输入行的末尾; 字符出现在
模式空间的结果 N 编辑命令。

示例


本篇 口渴 脚本模拟 BSD -s 命令,从中挤出多余的空行
标准输入。

口渴 -n '
# 填写 非空 线。
/./ {
p
d
}
# 填写 a 空的 线, 然后 HPMC胶囊 更多 空的 线。
/^$/ p
# 积极 下页 线, 丢弃 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 举行 (空的 线),
# HPMC胶囊 更多 空的 线。
:空的
/^$/ {
N
小号/.//
b 空的
}
# 填写 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 非空 线 before 背部 搜索、
# HPMC胶囊 这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 第一 in a of 空的 线。
p
'

下列 口渴 命令是一种更简单的压缩空行的方法,尽管它
不完全一样 -s 因为它删除了任何初始空行:

口渴 -n '/./,/^$/p'

基本原理


POSIX.1-2008 的这一卷要求实现支持至少十个不同的
文件s,匹配许多实现的历史实践。 实现是
鼓励支持更多,但符合要求的应用程序不应超过此限制。

此处指定的退出状态码与 System V 中的不同。 System V
乱码返回 2 口渴 命令,但返回零及其使用消息或如果
无法打开输入文件。 标准开发人员认为这是一个错误。

的方式 l 命令写入不可打印的字符已更改以避免
历史 backspace-overstrike 方法,以及实现明确的其他要求
添加了输出。 请参阅基本原理 ed 有关所选格式的详细信息,这是
与选择的相同 口渴.

POSIX.1-2008 的这一卷要求实现提供模式和保持空间
至少 8192 字节,大于一些历史使用的 4000 字节空间
实现,但少于早期提案中使用的 20480 字节限制。
鼓励实现动态分配更大的模式和保持空间
需要。

验收要求和命令行中的字符有
比早期的提案更明确地描述了历史
练习并消除对短语“保护初始空白[原文] 和标签
从出现在大部分脚本中的每个脚本行上进行的剥离
的历史文献 口渴 文本的实用描述。 (并非所有实现
已知已剥离来自文本行的字符,尽管它们都有
允许领导命令行中地址前面的字符。)

的治疗 '#' 评论与 SVID 不同,SVID 只允许将评论作为
脚本的第一行,但匹配 BSD 派生的实现。 注释字符
被视为命令,并且在被接受方面具有相同的属性
领导人物; BSD 实现历来支持这一点。

早期的提案要求 脚本文件 至少有一个非注释行。 一些
如果不是这种情况,历史实现就会以意想不到的方式表现。 这
标准开发人员认为这是不正确的行为,并且该应用程序
开发人员不应该避免使用此功能。 本卷的正确实施
POSIX.1-2008 应允许 脚本文件s 只包含注释行。

早期的提案表明,如果 -e-f 选项混杂,所有 -e 选项是
在任何之前处理 -f 选项。 这已更改为按顺序处理它们
之所以提出,是因为它符合历史实践,更直观。

的治疗 p 标记到 s System V 和基于 BSD 的命令不同
默认输出被抑制时的系统。 在两个例子中:

回音 a | 口渴 's/a/A/p'
回音 a | 口渴 -n 's/a/A/p'

本卷 POSIX.1-2008、BSD、System V 文档和 SVID 表明
第一个例子应该写两行 A,而第二个应该写一个。 一些
System V 系统编写 A 在两个例子中都只有一次,因为 p 标志被忽略,如果
这些因素包括原料奶的可用性以及达到必要粉末质量水平所需的工艺。 -n 未指定选项。

这是无法调和的系统之间的截然差异的情况
通过将行为声明为未指定的妥协。 SVID/BSD/System V
本卷 POSIX.1-2008 采用了文档行为,因为:

* 没有任何历史系统的已知文档描述了 p
标志和 -n 选项。

* 选择的行为更正确,因为没有任何技术理由
之间的互动 p 标志和 -n 选项。 之间的关系 -np
标志可能暗示它们只一起使用,但这会忽略有效的脚本
通过使用中断处理的循环性质 D, d, q
分支命令。 此类脚本依赖于 p 写模式空间的后缀
因为它们没有使用脚本“底部”的默认输出。

* 因为 -n 选项使 p 标记不必要,任何交互只会
有用的话 口渴 脚本被编写为在有和没有 -n 选项。 这是
认为不太可能。 程序员编写代码的可能性更大 p
标志期望它是不必要的。 因为没有记录交互,所以
程序员发现交互并依赖它的可能性进一步
减少了。

* 最后,在指定行为下中断的脚本会产生过多的输出
而不是太少,这更容易诊断和纠正。

使用的替代命令的形式 n 后缀仅限于前 512
在早期提案中匹配。 此限制已被删除,因为没有理由
{LINE_MAX} 长度的编辑器处理行应该有这个限制。 命令
s/a/A/2047 应该能够替代第 2047 次出现 a 在一条线上。

这个 b, t: 命令被记录为忽略前导空格,但没有提及
由尾随空白组成。 的历史实现 口渴 分配不同
标签的位置 'x'"x ". 这没有用,并且会导致微妙的编程
错误,但这是历史实践,更改它理论上可能会破坏工作
脚本。 鼓励实施者提供有关标签的警告消息
从未使用或跳转到不存在的标签。

从历史上看,在 口渴 !} 编辑命令不允许在一个
单行使用作为命令分隔符。 允许实现,但
不需要,以支持此扩展。

该标准的早期版本允许使用八字节以外的字节实现
位,但这已在此版本中进行了修改。

未来 如何前往


无。

使用 onworks.net 服务在线使用 sedposix


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad




×
广告
❤️在这里购物、预订或购买——免费,有助于保持服务免费。