J'ai un fichier texte énorme, beaucoup trop gros pour que tout soit mémorisé. Tout ce que je dois faire avec ce fichier texte est d’éditer la première ligne (c’est un fichier CSV et j’ai besoin de modifier les titres).
Y a-t-il un moyen simple de faire cela en bash?
edlin
pour ms-dos oued
car Unix ne semblait pas avoir ce problème, mais seulement des éditeurs de ligne ... La RAM était alors une chose rare et précieuse et une taille de fichier en gigaoctets était une chose impossible à croire! ;)ed
!!! mais ce serait un bon ajustement dans ce cas (je ne suis pas sûr qu'il puisse gérer un fichier de cette taille ...)Réponses:
Vous pouvez utiliser
less
pour voir ce que vous voulez éditer et utilisersed
faire les changements. De cette façon, vous éditez sans charger le fichier entier.Une autre méthode consiste à scinder le fichier, à le modifier et à le rejoindre:
la source
Si votre modification modifie la longueur de la ligne, le fichier entier doit être réécrit, voir par exemple cette discussion sur SO. Vous devriez probablement envisager de sauvegarder les données dans une base de données.
En gardant cela à l'esprit, vous pouvez éditer le fichier en streaming avec sed. Pour remplacer la première ligne, faites quelque chose comme ceci (GNU sed):
la source