Quelqu'un connaît-il un outil non basé sur la ligne pour rechercher / remplacer des chaînes "binaires" d'une manière quelque peu efficace en mémoire? Voir aussi cette question .
J'ai un fichier texte de + 2 Go que j'aimerais traiter de manière similaire à ce que cela semble faire:
sed -e 's/>\n/>/g'
Cela signifie que je souhaite supprimer toutes les nouvelles lignes qui se produisent après un >
, mais pas ailleurs, de sorte que cela soit exclu tr -d
.
Cette commande (que j'ai obtenue de la réponse à une question similaire ) échoue avec couldn't re-allocate memory
:
sed --unbuffered ':a;N;$!ba;s/>\n/>/g'
Alors, existe-t-il d'autres méthodes sans recourir à C? Je déteste Perl, mais je suis prêt à faire une exception dans ce cas :-)
Je ne sais pas avec certitude de caractère qui ne se produit pas dans les données, donc remplacement temporaire \n
par un autre caractère est quelque chose que j'aimerais éviter si possible.
Des bonnes idées, quelqu'un?
--unbuffered
manque de mémoire
$!
-il?
$!
si c'est le cas. Je pense que cela aura besoin de BEAUCOUP de mémoire.
sed
n'est pas l'outil approprié dans ce cas.
--unbuffered
?