Alguém conhece uma ferramenta não baseada em linha para pesquisar / substituir "binariamente" cadeias de caracteres de maneira um pouco eficiente em termos de memória? Veja esta pergunta também.
Eu tenho um arquivo de texto de + 2 GB que gostaria de processar semelhante ao que isso parece fazer:
sed -e 's/>\n/>/g'
Isso significa que eu quero remover todas as novas linhas que ocorrem depois de um >
, mas não em nenhum outro lugar, para que isso exclua tr -d
.
Este comando (que obtive da resposta de uma pergunta semelhante ) falha com couldn't re-allocate memory
:
sed --unbuffered ':a;N;$!ba;s/>\n/>/g'
Então, existem outros métodos sem recorrer a C? Eu odeio perl, mas estou disposto a fazer uma exceção neste caso :-)
Não tenho certeza de nenhum caractere que não ocorra nos dados; portanto, substituir temporariamente \n
por outro é algo que eu gostaria de evitar, se possível.
Alguma boa ideia, alguém?
--unbuffered
ficar sem memória
$!
faz?
$!
é. Espero que isso precise de muita memória.
sed
não é a ferramenta adequada neste caso.
--unbuffered
?