如何将 less 中的所有行写入文件?

如何将 less 中的所有行写入文件?

我已通过管道将命令发送到less,现在我想将该命令的输出保存到文件中。我怎么做?

在这种情况下,我不想使用tee,我想要直接从 less 获得解决方案,这样如果我忘记使用 ,我就不必重新运行长时间运行的命令tee

这个问题与这个问题类似,唯一的区别是我想保存所有行,而不是子集:从 less 将行写入文件

答案1

从 中less,键入s,然后键入要保存到的文件名,然后键入Enter
man页面中,在COMMANDS

s filename
      Save the input to a file.  This only works if the input is a pipe, not an ordinary file.

man页面还指出,根据您的特定安装,该s命令可能不可用。在这种情况下,您可以使用以下命令转到第 1 行:

g or < or ESC-<
      Go to line N in the file, default 1 (beginning of file).

并将整个内容通过管道传输到cat

| <m> shell-command
      <m> represents any mark letter. Pipes a section of the input file to the
      given shell command. The section of the file to be piped is between the
      first line on the current screen and the position marked by the letter. 
      <m> may also be ^ or $ to indicate beginning or end of file respectively.

所以要么:

g|$cat > filename

或者:

<|$cat > filename

即输入g<G或者少于) | $(管道然后美元) 然后cat > filenameEnter.
无论输入是管道还是普通文件,这都应该有效。

答案2

一种无需这样做的方法tee如下。如果
less /path/to/input > /path/to/output
上面的/path/to/output内容已经存在,则会覆盖它。

执行相同的操作,但附加/path/to/output如下。要在打开文本后
less /path/to/input >> /path/to/output

保存文本,可以使用“保存文件”功能。 进入后,按。然后,键入文件名。 如果您使用管道,该文件将自动写入工作目录。 如果您没有使用管道,您将打开一个包含文本的文件(您可以保存该文本)。 我相信该文件将以.less
lesss


vim

答案3

你不使用 less,而是使用 tee,然后通过管道将 tee 连接到 less。

./program | tee program.out | less

相关内容