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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  script un peu compliqué de réorganisation de lignes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

script un peu compliqué de réorganisation de lignes

n°919895
freewol
Ceci n'est pas une citation
Posté le 06-06-2007 à 10:17:16  profilanswer
 

Bonjour,
 
je pense que c'est possible mais ça dépasse malheureusement mes compétences :( Je souhaite prendre en entrée un fichier composé de lignes contenant chacune un seul mot. Je souhaite les réorganiser de sorte que si un mot 1 est contenu dans un mot 2, alors le mot 2 apparaisse avant le mot 1 pdt la lecture du fichier.
 
Par exemple, si le fichier d'entrée est :

Code :
  1. TOTO
  2. TOTOTITI
  3. TUTU
  4. TO


une sortie correcte pourrait être :

Code :
  1. TOTOTITI
  2. TOTO
  3. TO
  4. TUTU


 
Je pense que l'algo le plus simple consiste juste à trier les mots par taille décroissante. Mais je ne sais pas comment faire ça :(
 
Merci d'avance pour toute piste :)

mood
Publicité
Posté le 06-06-2007 à 10:17:16  profilanswer
 

n°919898
arghbis
salops de dauphins
Posté le 06-06-2007 à 10:21:39  profilanswer
 

sort -r ?
ça te donnera plutôt un truc du genre  
TUTU
TOTOTITI
TOTO
TO
 
mais ça dépend de ce que tu veux faire après

n°919900
freewol
Ceci n'est pas une citation
Posté le 06-06-2007 à 10:23:13  profilanswer
 

C'est pour faire des remplacements dans un fichier. Du coup par exemple si TOTO apparait avant TOTOTITI je vais pas pouvoir remplacer ce dernier. Je regarde ta commande tout de suite :)

 

EDIT : hum ça trie suivant les premières lettres donc ça ne me va pas. Par exemple TITITOTO ne sera pas avant TOTO


Message édité par freewol le 06-06-2007 à 10:24:37
n°919901
freewol
Ceci n'est pas une citation
Posté le 06-06-2007 à 10:27:48  profilanswer
 

je pense qu'avec awk je peux ajouter en début de ligne le nombre de caractères contenus dans la ligne ? auquel cas après je pourrais effectivement faire un sort numérique sur le fichier :)  
je connais très mal awk donc je vais jeter un oeil dans la doc, mais si vous savez comment faire je suis preneur :)

n°919903
arghbis
salops de dauphins
Posté le 06-06-2007 à 10:29:14  profilanswer
 

il dit qu'il comprend pas ton problème. Donne un exemple de ce que tu veux réellement faire, ça sera plus simple

n°919906
freewol
Ceci n'est pas une citation
Posté le 06-06-2007 à 10:33:40  profilanswer
 

Bah comme je l'ai dit je génère des fichiers pour faire des remplacements après. Voici le script que j'applique ensuite :
 

Code :
  1. #!/usr/bin/zsh
  2. grep '^#define' fichier.h | sed 's/[[:blank:]][[:blank:]]*/ /g' | cut -d' ' -f2 > fichier_constantes
  3. grep '^#define' fichier.h | sed 's/[[:blank:]][[:blank:]]*/ /g' | cut -d' ' -f3 > fichier_constantes_values
  4. nb_cst=`wc -l fichier_constantes | cut -d' ' -f1`
  5. cp fichier.cc fichier_step1
  6. for i in `seq 1 $nb_cst`; do
  7. var1=`head fichier_constantes -n $i | tail -n 1`
  8. var2=`head fichier_constantes_values -n $i | tail -n 1`
  9. echo "replacing $var1 with \t$var2"
  10.  (( j = $i + 1 ))
  11.  sed -e "s/$var1/$var2/g" fichier_step$i > fichier_step$j
  12. done
  13. for i in `seq 1 $nb_cst`; do
  14. rm fichier_step$i
  15. done
  16. mv fichier_step$j fichierbis.cc
  17. cp fichier.h fichierbis.h


 
Je souhaite donc réorganiser fichier_constantes de sorte qu'une constante 1 contenant une constante 2 soit placée avant cette dernière.
 
Est-ce plus clair ?

n°919919
freewol
Ceci n'est pas une citation
Posté le 06-06-2007 à 11:14:56  profilanswer
 

bon j'ai réussi avec awk et son champ length :)
comme je suis pas spécialiste le script est assez moche mais le principal c'est que ça marche :)


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

  script un peu compliqué de réorganisation de lignes

 

Sujets relatifs
Script et MD5[Resolu]Script Debian : lancer Firefox
[résolu] Script pour lancer Opencellarioview et netview pour mesurer les débits DD et net sous Linux (v1.04)
probleme avec script de backuplancement periodique d'un script PHP sous windows
[RESOLU] recupere des valeurs dans un fichier a partir d'un scriptscript d'ouverture de session sous samba
Déclaration de var. d'env depuis un script.Script pour fermer Outlook automatiquement
Plus de sujets relatifs à : script un peu compliqué de réorganisation de lignes


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