使用vim从pipe命令的输出打开一个文件

使用vim从pipe命令的输出打开一个文件,vim,sed,Vim,Sed,我有一个文本文件abc.txt中的文件列表。 我必须从文件中读取第n行,并使用vim打开文件。 我已经这样做了,但是第n行的文件没有打开:- sed-n4p abc.txt|vim- 试图从abc.txt中获取第四行,并使用vim打开它。但我得到的输出是该特定行号处的文件内容:- 正确的命令如下: vim "$(sed -n 4p abc.txt)" 不同之处在于,它将sed的输出作为第一个参数传递给vim。因此,Vim将打开该文件 在您键入的命令中,sed的输出通过管道传输到vim的标准输入

我有一个文本文件
abc.txt
中的文件列表。 我必须从文件中读取第n行,并使用vim打开文件。 我已经这样做了,但是第n行的文件没有打开:-

sed-n4p abc.txt|vim-

试图从abc.txt中获取第四行,并使用vim打开它。但我得到的输出是该特定行号处的文件内容:-
正确的命令如下:

vim "$(sed -n 4p abc.txt)"
不同之处在于,它将sed的输出作为第一个参数传递给vim。因此,Vim将打开该文件


在您键入的命令中,sed的输出通过管道传输到vim的标准输入。由于将“-”作为参数传递给Vim,因此它假定要编辑的文本是通过标准输入得到的。此文本是文件名,但不是文件内容。

正确的命令如下:

vim "$(sed -n 4p abc.txt)"
不同之处在于,它将sed的输出作为第一个参数传递给vim。因此,Vim将打开该文件

在您键入的命令中,sed的输出通过管道传输到vim的标准输入。由于将“-”作为参数传递给Vim,因此它假定要编辑的文本是通过标准输入得到的。此文本是文件名,但不是文件的内容。

是的,我知道了。 命令是

vim `sed -n 4p abc.txt`
是的,我知道了。 命令是

vim `sed -n 4p abc.txt`

上面写着非法的变量名。看起来要么你有一个旧版本的Bash,要么你正在使用其他的shell$(…)是backticks(`…`)的一个新的改进版本,但是一些shell不支持它。正如您正确地指出的,在shell上使用backticks是有效的。这与OP的情况无关,但适用于希望同时打开多个文件的任何其他人:
vim-p“$(您的命令)”
在一个新的vim选项卡中打开每个文件:它显示非法变量名。看起来要么是旧版本的Bash,要么是在使用其他shell$(…)是backticks(`…`)的一个新的改进版本,但是一些shell不支持它。正如您正确理解的那样,使用backticks可以在shell上工作。这与OP的情况无关,但适用于希望同时打开多个文件的任何其他人:
vim-p“$(您的命令)”
在新的vim选项卡中打开每个文件: