Edit. Lorsque j'ai rédigé cette réponse, j'ai négligé la partie "téraoctet" de la question. Donc, ne pas utiliser la méthode présentée ici . Je laisse quand même ce post, car il fait la publicité de cet outil merveilleux, ed
l'éditeur de texte standard.
Comme d'habitude, ed
est l'éditeur de texte standard. La solution utilisant sed -i
n'édite pas, comme il le mentionne, "le fichier en place". Au lieu de cela, il édite son contenu dans un fichier temporaire, puis renomme ce fichier en celui d'origine. Ce n'est vraiment pas bon pour les gros fichiers !
Utilisation de ed
au lieu d'éditer réellement le fichier. Quelque chose comme ça :
#!/bin/bash
file="input.csv"
{
ed -s "$file" <<EOF
1
i
id1,id2,id3,id4
.
wq
EOF
} > /dev/null
Explication : 1
va à la première ligne, i
passe en mode insertion, puis nous insérons id1,id2,id3,id4
puis .
pour revenir au mode normal, et wq
d'écrire et d'abandonner.
Avec cette méthode, vous éditez réellement le fichier et c'est deux fois plus rapide que la méthode sed. Aussi, ed
est connu pour être "sûr pour les gros fichiers" !
C'est fait.