我喜欢用传统的ex
用于简单命令行操作的编辑器,用于重新排列文件内的文本。例如,对于文件中的简单移动行,我会使用类似的东西
foo
bar
zoo
dude
在我这样做dude
之后移动文本foo
printf '%s\n' '/dude' 'd' '/foo' '-' 'put' 'wq' | ex file
这意味着移动到模式dude
,将该行放入缓冲区并将其粘贴到后面foo
并wq
关闭文件。
到目前为止效果很好,但我想将自定义文本插入到文件中,例如
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 文本处理。海登图书。