Como mesclar um arquivo de troca (.swp) ao arquivo original?

1

Eu estava executando um programa do bash com sua saída redirecionada para um arquivo (test.out). O processo morreu devido a alguns problemas (os problemas não são importantes neste contexto) e agora tenho dois arquivos:

  • O arquivo de saída original test.out , que é de 2,1 GB, e
  • O arquivo de troca gerou .test.out.swp , que é 19 MB

Existe uma maneira de mesclar esses arquivos, como no acréscimo do arquivo de troca no final do arquivo original?

Ou estou errado em querer fazer isso? O arquivo de troca tem um propósito diferente do que ser usado com saída / log?

    
por NurShomik 04.04.2018 / 03:58

2 respostas

2

O vim usa arquivos .swp como áreas de armazenamento para trabalhos inacabados, permitindo que edite arquivos muito grandes, mesmo que eles não caibam completamente na memória. Este é um legado dos tempos em que a RAM do computador era muito pequena e grandes arquivos que não cabiam na memória era mais comum, mas permaneceu, e significa que podemos editar arquivos com muitos Gigabytes sem consumir toda a RAM disponível ou matar processos. O Vim exclui o arquivo .swp quando terminar de editá-lo ou o deixa, se o processo sair anormalmente.

Se você tiver um arquivo .swp e um arquivo original, você pode recuperar um pouco de trabalho perdido. Isso está documentado aqui:

link

Para recuperar um arquivo, basta abrir o arquivo original. O vim notará que já existe um arquivo .swp associado ao arquivo e lhe dará um aviso e perguntará o que você deseja fazer. Supondo que você tenha os privilégios necessários para gravar no arquivo, "recover" deve ser uma das opções dadas.

Como alternativa, você pode iniciar uma nova instância vim (em um documento em branco) e usar o comando :recover <file> indicando o arquivo que deseja recuperar.

Observe que o uso principal de arquivos .swp é como armazenamento temporário para o vim, permitindo a edição de arquivos grandes, NÃO de recuperação. Como tal, o vim não escreve o diário no arquivo e, se a energia for perdida durante a edição, o arquivo .swp pode ficar corrompido. Felizmente, a ferramenta de recuperação no vim é bastante tolerante para corromper parcialmente arquivos .swp e ainda tentará recuperar o máximo possível das alterações perdidas no arquivo. Procure a existência de três pontos de interrogação: ??? no arquivo recuperado, pois eles serão inseridos sempre que a corrupção for encontrada no arquivo .swp.

Quando estiver satisfeito com a recuperação, você precisará excluir manualmente o arquivo .swp para garantir que você não continue recebendo o aviso quando for editar o arquivo. Tenha cuidado para não executar o processo de recuperação uma segunda vez.

    
por thomasrutter 04.04.2018 / 05:48
1

Resposta direta

Para responder tecnicamente à sua pergunta:

cat test.out > experiment.out
cat .test.out.swp >> experiment.out

O primeiro redirecionamento do cat command > cria um novo arquivo. O segundo redirecionamento do cat command >> é anexado ao arquivo existente.

Na realidade, experiment.out provavelmente não será utilizável porque você está adicionando uma maçã a uma laranja.

Reparo alternativo

Você pode fazer o google para reparar os arquivos: Superuser.com Como posso recuperar o arquivo original de um arquivo .swp? Em suma:

vim -r .swp

Faça cópias de todos os arquivos primeiro!

Se isso não funcionar, eu usaria gedit em ambos os arquivos em guias separadas e, em uma terceira guia, colaria o texto copiado das duas primeiras guias.

    
por WinEunuuchs2Unix 04.04.2018 / 04:57