进一步阅读

进一步阅读

我喜欢用传统的ex用于简单命令行操作的编辑器,用于重新排列文件内的文本。例如,对于文件中的简单移动行,我会使用类似的东西

foo
bar
zoo
dude

在我这样做dude之后移动文本foo

printf '%s\n' '/dude' 'd' '/foo' '-' 'put' 'wq' | ex file

这意味着移动到模式dude,将该行放入缓冲区并将其粘贴到后面foowq关闭文件。

到目前为止效果很好,但我想将自定义文本插入到文件中,例如

 example
//commented
 abc
 def

//commented如果模式匹配,我需要在上面添加另一个文本,abc即文件中是否abc存在,并且如果以//存在开头的行添加另一行//new text,那么它应该看起来像

 example
//new text
//commented
 abc
 def

我尝试在下面执行以下操作,使用itextESC插入文本,但它不起作用。

printf '%s\n' '/abc' '-' '/\/\/' 'itextESC' 'wq' | ex file

我想让这个工具发挥作用ed或者ex探索更多关于这个工具的信息。如果ed/ex可以用于像这样的琐碎任务,我将不胜感激。

答案1

不要指望视觉命令能在ex模式下工作。请使用实际的ex命令来插入文本,a[pend] 和i[nsert]。

printf '%s\n' '/abc' '-' '/\/\/' 'i' '文本' '.' 'wq' | 'wq' |前文件

进一步阅读

  • 戴尔·多尔蒂和蒂姆·奥莱利 (1987)。 “高级编辑”。Unix 文本处理。海登图书。

相关内容