我可以访问标准输出的第 N 行号吗?

k0p*_*kus 17 bash keyboard-shortcuts terminal efficiency stdout

假设一个输出文件列表的脚本:

$> bash someScript.sh
path/to/some/file
path/to/the/file/i/want/to/work/with
path/to/yet/another/file
Run Code Online (Sandbox Code Playgroud)

现在我想将第二个文件路径作为另一个命令的参数,例如vim. 有没有办法直接访问它?

我想指出,我不一定要访问第二个文件,但下次可能是第三个或第 27 个。我希望能够尽可能轻松地选择第 N 行。

现在我用鼠标选择并通过单击鼠标中键插入或使用制表符完成输入路径。现在我想知道是否有更简单的方法。

我自己的解决方案的问题是我必须以这种方式编辑我的所有脚本。如果有一个更通用的解决方案来解决这个问题会很有趣,它可以与任何类型的命令一起使用,例如find.

ang*_*gus 34

当然。

bash someScript.sh | sed -n '2 p'
Run Code Online (Sandbox Code Playgroud)

将过滤您的输出并只打印它的第二行。要将其作为参数vim:

vim "$(bash someScript.sh | sed -n '2 p')"
Run Code Online (Sandbox Code Playgroud)

  • 由于问题被标记为 [tag:efficiency],最好尽快停止 `sed`:`sed -n '2{p;q}'`。这避免了徒劳地读取输出的剩余部分。@Benoit,`awk` 类似:`awk 'NR==2{print;exit}`。 (12认同)
  • awk 方式:`awk 'NR==2'` 而不是 `sed -n '2 p'` (6认同)

Ste*_*uan 10

使用 head 和 tail,例如访问输出的第二行:

bash someScript.sh | head -2 | tail -1
Run Code Online (Sandbox Code Playgroud)