Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
969 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Découper du texte dans un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Découper du texte dans un fichier

n°1273645
xavierjf_1​01
Posté le 10-04-2011 à 20:10:55  profilanswer
 

Bonjour,  
 
J'ai un fichier txt (exemple ci dessous) contenant plusieurs parties (NOMx) avec un certain nombre de ligne à la suite (pas tjrs le même nombre de ligne).  
J'aimerai regrouper les parties de même nom et envoyer le résultat dans un fichier (autant de fichier que de NOMx différent.).  
Je ne sais pas trop vers quelle commande m'orienter (sed, une boucle while dans un bash...)  
J'espère avoir été clair dans mon explication. merci pour vos éventuelles pistes.  
 
>NOM1  
regergergergreg  
regreregrggrreg  
ergregregregrg  
 
>NOM2  
ezfefezfefezfef  
zefzefezfzefezf  
zefezfzefezffez  
 
>NOM1  
zfefzefezfezf  
ezfezfezfezf  
 
>NOM3  
fzefzefzefzefzef  
zefzefzeffzefzef  
 
>NOM2  
fzefezfezfezfzef  
 
 
 
 
 
Xavier

mood
Publicité
Posté le 10-04-2011 à 20:10:55  profilanswer
 

n°1273654
roondar
Posté le 10-04-2011 à 22:38:26  profilanswer
 

si tu pouvais donner plus de details ?
sinon du sed dans un for.

n°1273657
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 10-04-2011 à 23:16:48  profilanswer
 

pourquoi faire du bash qui n'est pas vraiment adapté au lieu d'un vrai langage de script ? Perl ou Ruby c'est 10 lignes de script pour ça.


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°1273714
xavierjf_1​01
Posté le 11-04-2011 à 11:12:50  profilanswer
 

Quel genre de details il te faut ?
un sed dans un for, mais qu'est ce qui permet à sed de ne se limiter qu'à la partie ?

n°1273837
roondar
Posté le 11-04-2011 à 17:25:28  profilanswer
 

Regarde la partie "bloc" sur ce lien http://www.commentcamarche.net/faq [...] stitution.
Voici un exemple de script qui fonctionne :

Code :
  1. cat temp
  2. >NOM1 
  3. regergergergreg 
  4. regreregrggrreg 
  5. ergregregregrg 
  6. >NOM2 
  7. ezfefezfefezfef 
  8. zefzefezfzefezf 
  9. zefezfzefezffez 
  10. >NOM1 
  11. zfefzefezfezf 
  12. ezfezfezfezf 
  13. >NOM3 
  14. fzefzefzefzefzef 
  15. zefzefzeffzefzef 
  16. >NOM2 
  17. fzefezfezfezfzef
 
Code :
  1. #!/bin/bash
  2. # -*- coding: UTF8 -*-
  3. for i in {1..10}
  4. do
  5.     sed -n "/>NOM$i/,/^ *$/ p" temp|sed "/>NOM$i/d;/^ *$/d" > "nom$i.txt"
  6. done
  7. find . -name "nom*.txt" -size 0 -delete


Message édité par roondar le 11-04-2011 à 18:25:36
n°1273971
xavierjf_1​01
Posté le 12-04-2011 à 11:45:09  profilanswer
 

Merci pour le script, je comprend mieux maintenant comment je dois faire.
 
Bonne journée,
 
Xavier.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Découper du texte dans un fichier

 

Sujets relatifs
Perte de données: Lien du fichier briséemacs charge à chaque démarrage un fichier d'information [résolu]
Nagios et fichier hosts.cfgscript de gestion d'user, fin de fichier prématurée
Linux : suppression d'un programme (fichier) pendant qu'il s'exécuteInstallation D'un server de Fichier sous Linux (DLNa, FTP, Partage)
script shell pour manipuler fichier csv2 ou 4 coeurs pour serveur de fichier sous Debian Lenny
Plus de sujets relatifs à : Découper du texte dans un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR