首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ed内部运行ed脚本

从ed内部运行ed脚本
EN

Unix & Linux用户
提问于 2021-07-14 14:56:07
回答 1查看 218关注 0票数 2

我创建了一个名为“清除”的脚本文件,其中包含一系列正则表达式,用于清除ed文件(S)中的空格、尾随空格、空白行等。我按以下方式运行它:

代码语言:javascript
复制
ed [name-of-file] < [name-of-script]

有时,我想从ed中运行当前正在编辑的文件上的脚本。我不确定我需要这样做的语法。

下面是一个示例脚本:

代码语言:javascript
复制
g/^  */s///
# Remove blank spaces at the beginning of a line
g/  *$/s///
# Remove trailing whitespace at end of line
g/   */s// /g
# Remove additional spaces between words
g/^$/d
# delete blank lines
g/\(‘‘\|’’\)/s//"/g
# Remove curly braces
g/\(“\|”\)/s//"/g
g/\(‘\|’\)/s//'/g
# idem
,p
Q
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-07-14 14:59:38

你可能需要

代码语言:javascript
复制
e !ed -s % 

如果脚本以输出修改后的编辑缓冲区结束,即如果脚本以,p和Q结尾。这将用!之后的命令输出替换当前编辑缓冲区的内容。命令中的%将自动替换为当前文件的名称(此命令不会更改当前文件的名称)。

只需首先记住w,以便生成的ed在此之前看到您的编辑。

(这似乎不适用于示例脚本,但是.)如果脚本对文件进行就地编辑,以便在文件末尾将文件保存回磁盘,则使用

代码语言:javascript
复制
!ed -s % </pre><div>这将在shell中执行<code>ed</code>命令,然后用更新的文件内容替换当前的编辑缓冲区。再说一遍,不要忘了先<code>w</code>。</div><div>进一步解释:</div><div><code>e !somecommand</code>命令丢弃当前编辑缓冲区,并将其替换为<code>somecommand</code>的输出。</div><div>这意味着,如果<code>e !ed -s % <script</code>编辑脚本在标准输出上输出最终结果,那么<code>script</code>将是合适的,并且您希望编辑该输出。</div><div>没有进一步的参数,<code>e</code>命令将重新打开当前文件,并用该文件的内容替换编辑缓冲区。如果前面是<code>!somecommand</code>,<code>somecommand</code>将更改当前文件,那么您将如何将这些更改合并到编辑会话中。</div><div>这意味着,如果<code>!ed -s % <script</code>编辑脚本将修改后的文档保存回相同的名称(而不是将其写入标准输出),那么您可能希望使用<code>e</code>后面的<code>script</code>。</div>
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/658369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档