Eu tenho um grande arquivo de texto (cerca de 2 GB). Quero fazer cinco pesquisas e substituir ações no mesmo arquivo e gostaria de fazer isso em um comando. Normalmente eu uso o vim, abro o arquivo, faço uma ação de substituição e depois a próxima etc. Há um problema, pois notei que após três ou quatro pesquisas o vim falha devido a problemas de memória.
Aqui estão dois exemplos do comando que eu uso no Vim:
:%s/www\.abcdef/www.test.abcdef/g
:%s/www\.klmnop/www.test.klmnop/g
Qual a melhor forma de lidar com isto?
linux
vim
sed
find-and-replace
SPRBRN
fonte
fonte
sed
. Eu tentei, e funciona. Há uma boa discussão no Unix e Linux Stackexchange , e a resposta aceita não menciona pontos como caracteres para escapar.Se você tiver muitos outros padrões de pesquisa, poderá salvá-los em um arquivo e ler as substituições a partir daí. Por exemplo, diga que este é o conteúdo de
replacements.txt
:Você pode então ler uma lista de N substituições e substituí-las por:
NOTAS:
replacements.txt
.sed
por substituição, o que poderá demorar um pouco se você tiver muitas operações de substituição.Outra opção seria escrever o
sed
texto acima como um script:Você pode executar o script no seu arquivo e ele fará todas as substituições de uma só vez:
fonte