Como posso salvar o conteúdo atual de less em um arquivo?

91

Se eu canalizei os resultados de um comando lesse decidi que quero salvar o conteúdo em um arquivo, isso é possível?

Tentei definir uma marca ano final do buffer e, em seguida, retornar ao topo e usar |avipara enviar todo o conteúdo vi, mas isso não funciona.

Jonathan Day
fonte
1
Sua técnica original funcionaria se você instruesse o vi a carregar do stdin, fazendo isso |avi -.
Joe Shaw

Respostas:

102

No meu sistema, man lessdiz

       s filename
              Salve a entrada em um arquivo. Isso só funciona se a entrada for uma
              pipe, não um arquivo comum.

Funciona para mim!

RedGrittyBrick
fonte
4
De alguma forma, isso não funciona para mim - digitar 's' move a janela em uma linha. Estou no Mac.
21414 Benroth
2
@ Benroth: Você provavelmente tem um lesskeyarquivo que altera os comandos normais. Vejaman lesskey
RedGrittyBrick
8
stambém não funciona para mim, mas -o filefunciona.
precisa saber é o seguinte
1
E por que diabos isso não é mencionado quando eu digito 'h' para obter ajuda interativa? +1 se você leu a ajuda interativa e, portanto, não acho consultar man less...
Peter V. Mørch
1
@comfreak: Sim, está em menos 487 no Ubuntu 18.04, mas não em menos 481 no Debian 9 / stretch / stable
Peter V. Mørch
24

A resposta aceita não funciona no Mac - como @benroth diz, pressionar sapenas desce uma linha - mas você pode usar um método diferente.

Em less --help:

|Xcommand            Pipe file between current pos & mark X to shell command.

e

A mark is any upper-case or lower-case letter.
Certain marks are predefined:
     ^  means  beginning of the file
     $  means  end of the file

Portanto, se você for para o topo do buffer ( <) e depois:

|$cat > /tmp/foo.txt

o conteúdo do buffer será gravado em /tmp/foo.txt.

Joe Shaw
fonte
Esse método pode ser especialmente útil quando você deseja canalizar o buffer atual que está sendo visualizado através de outro comando.
precisa
3

Quando o seu lessé aberto, você pode salvar a saída completa em um arquivo. Assim vim, menos suporta comandos.

Basta digitar a chave e s, em seguida less, perguntará o nome do arquivo onde você deseja salvar o conteúdo, digite o nome do arquivo e digite Enter.

Felicidades

Magnos Hammes
fonte
0

Use o >operador. Por exemplo: less foo.bar > output.txt.

Dror
fonte
Graças @Dror, mas já no menor aplicação sou, não na festa pedir mais
Jonathan Dia
Uma contribuição valiosa para o Q / A. Em vez de iniciar uma pergunta totalmente separada, as pessoas que precisam de um método para criar scripts para vários arquivos por meio do Less Viewer podem se beneficiar muito. Economizei horas de trabalho (depois de muita pesquisa). Obrigado!
LD James
0

Não, se você iniciou menos, mas se você sabe antes de enviá-lo para less e um arquivo, pode usar o comando tee

command | tee out_file | less
user151019
fonte
Obrigado, Mark, mas estou procurando especificamente como fazê-lo, se já estiver com menos.
Jonathan Day
0

Minha resposta chega um pouco tarde demais, acredito. Mas apenas para referência, em resposta à preocupação de benroth acima: Para usuários do OSX, há sempre a opção de despejar o conteúdo do pager em um arquivo de log usando a opção "-l" (leia DASH ELL ) no prompt de dois pontos.

O pager solicitará um arquivo de log. Digite e pressione [CR]

superk
fonte