Modificatio contenu de fichier
DKAM
-
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 18789 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Salut les amis,
je travaille sur une application qui récupère le contenu d'un fichier à partir de la ligne 34. Avant le chargement des fichiers dans cette application, je dois ouvrir chaque fichier et supprimer où ajouter des lignes vides de façon à ce que la partie du contenu du fichier pris en compte par l'application soit à la ligne 34.
je dois effectuer cette tache répétitive pour plusieurs milliers de fichiers.
Comment pourrais-je automatiser cette tâche à l'aide de script shell?.
NB: La première ligne de la partie du contenu qui est pris en compte par l'application commence par 60012 (par exemple) pour tous les fichiers.
Salut les amis,
je travaille sur une application qui récupère le contenu d'un fichier à partir de la ligne 34. Avant le chargement des fichiers dans cette application, je dois ouvrir chaque fichier et supprimer où ajouter des lignes vides de façon à ce que la partie du contenu du fichier pris en compte par l'application soit à la ligne 34.
je dois effectuer cette tache répétitive pour plusieurs milliers de fichiers.
Comment pourrais-je automatiser cette tâche à l'aide de script shell?.
NB: La première ligne de la partie du contenu qui est pris en compte par l'application commence par 60012 (par exemple) pour tous les fichiers.
A voir également:
- Modificatio contenu de fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
2 réponses
ligne=`grep -n contenudeligne34 tonfichier | cut -d: -f1`
Ligne contient donc le numéro de la ligne où se trouvent les information devant se trouver en ligne 34
Si lignes > 34 il faut supprimer ligne-34 ligne(s)
Si lignes < 34 il faut ajouter 34-ligne ligne(s)
Pour supprimer les lignes tu peux y aller à coups de sed ou head/tail, pour en ajouter je n'ai pas cherché de manière "propre" mais tu peux faire ceci :
Tu crées un fichier contenant un retour à la ligne (nommons le li)
ajouter une ligne reviens à faire
Tu peux faire passer tout ça dans des boucles for pour ajouter/supprimer le nb de lignes voulues
Ligne contient donc le numéro de la ligne où se trouvent les information devant se trouver en ligne 34
Si lignes > 34 il faut supprimer ligne-34 ligne(s)
Si lignes < 34 il faut ajouter 34-ligne ligne(s)
Pour supprimer les lignes tu peux y aller à coups de sed ou head/tail, pour en ajouter je n'ai pas cherché de manière "propre" mais tu peux faire ceci :
Tu crées un fichier contenant un retour à la ligne (nommons le li)
ajouter une ligne reviens à faire
cat li tonfichier > tmp
mv tmp tonfichier
Tu peux faire passer tout ça dans des boucles for pour ajouter/supprimer le nb de lignes voulues
hello
insère 34 lignes vides avant 60012
insère 34 lignes vides avant 60012
(printf "%.0s\n" {1..34}; sed -n '/60012/,$p' fichier) > fichier2
juuuustement dubcek, cela aurait été plus simple. mais avant la ligne 34 il y a des lignes qui ne sont pas en commentaire, telles que la date de création du fichier, des adresse...(en-tête). qui ne doivent pas être supprimées.
Donc ce sont les lignes vides que je dois supprimer pour que la 1ere ligne commençant par 61202... soit à la ligne 34.
Donc ce sont les lignes vides que je dois supprimer pour que la 1ere ligne commençant par 61202... soit à la ligne 34.
Avec sed c'est plus simple :
Mais pour en revenir au problème initial, à chercher le numéro de ligne du motif, avec grep ou sed ou autre commande, autant essayer de le faire avec l'application initiale, qui, si elle sait trouver un numéro de ligne, doit être sûrement capable de trouver un motif, non ?