通过无头 vi 风格编辑器进行管道传输

通过无头 vi 风格编辑器进行管道传输

我很vi清楚。当我在命令行上进行操作时,我真的很想使用它。

有没有一种简单的方法可以将进程的标准输出传输到无头版本的 vi 之类的东西中,然后传输到标准输出?

像这样的东西:

$ uname -a | <headless_vi> "3f D"
Linux robbie 4.8.13-1-ARCH

答案1

正如 @JdeBP 指出的,您最好使用sed流编辑器,或者甚至只是cut

$ uname -a | cut -d ' ' -f 1-3
OpenBSD box 6.0

或者,如果你完全删掉剪辑,

$ uname -snr
OpenBSD box 6.0

问题vi是它没有流编辑模式。行编辑器ex 有一个“批处理模式”,但很少使用,而且它像任何其他行编辑器一样,不能在一行上“来回移动光标”。

sed是行编辑器的流编辑器版本ed,专门用于将编辑脚本应用于流。该vi编辑器是行编辑器的屏幕编辑器版本ex,并且ex编辑器是ed.

命令vi序列将移动到一行上的3f␣第三个(空格),下面的命令将删除该行的其余部分。如果您有屏幕编辑功能,那就很方便了。D

edsed和中ex,您可以添加行、删除行或更改行,其中“行”表示“一次整行”。要在edor中执行相同的操作ex,假设我们位于缓冲区中的正确行,您会说...好吧,您必须制作正则表达式模式和替换字符串,并将它们与s编辑命令一起使用来更改线,在这种情况下是不平凡的。

对于sed,这将采取以下形式

$ uname -a | sed 's/PATTERN/REPLACEMENT/'

相关内容