Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/11/2008, à 08:43

next-d

tri fichier demande d'aide

bjr,

j'ai un fichier de 1000 lignes qui est identique toute les 11 lignes.
Ces 11 lignes sont en desordre.
Le but est de remettre des bouts de ces 11 lignes dans le bonne ordre..
et de refaire cette demarche sur tout le fichier.

Avez vous un peu de temps pour me donner un coup de main?
Cordialement.

Hors ligne

#2 Le 21/11/2008, à 08:56

Jos31

Re : tri fichier demande d'aide

Salut,

J'ai pas bien compris ce que tu voulais faire mais si c'est ca:

1
2
...
10
11
1
2
3
...
10
11

alors, entre juste tes 7 lignes dans l'ordre dans un fichier (original.txt par exemple), et entre cette commande:

echo "" > result.txt; i=0; while [ $i -lt 91 ]; do cat original.txt >> result.txt; i=`expr $i + 1`; done

Le 91 vient du nombre de lignes que tu veux faire (1000/11)

Dernière modification par Jos31 (Le 21/11/2008, à 08:58)

Hors ligne

#3 Le 21/11/2008, à 09:01

next-d

Re : tri fichier demande d'aide

exemple de fichier

11111111                 1'1'1'1'1'1'1'
     2222222222         2'2'2'2'2'2''22'2''
                     33333333  3'3'3'33'3'3'3'3'3'

444444444                   4'4'4'4'4'4'4'4'4

etc....

et je voudrais  faire

1111111111
2222222222
3333333333
4444444444

1'1'1'1'1'1'1'1
2'2'2'2'2'2'2'2'
3'3'3'3'3'3'3'3'
4'4'4'4'4'4'4'4'

etc....

Hors ligne

#4 Le 21/11/2008, à 09:53

Totor

Re : tri fichier demande d'aide

quand je lis ton 1er post, j'arrive à comprendre quelque chose mais en y mettant vraiment de la bonne volonté !
quand je lis le 2nd, j'y comprends vraiment rien !

dans l'un tu parles de lignes et dans l'autre, tu présentes un fichier qu'il faut travailler en colonne....


-- Lucid Lynx --

Hors ligne

#5 Le 21/11/2008, à 11:18

Diiidoooooouuuu

Re : tri fichier demande d'aide

Si j'ai bien compris, tu souhaites retourner à la ligne après chaque mot, c'est cela ?

#6 Le 21/11/2008, à 11:30

next-d

Re : tri fichier demande d'aide

pas tout a fait
en gros faire des decoupes de phrase pour les regrouper par la suite.

Hors ligne

#7 Le 21/11/2008, à 12:31

Didouuuu

Re : tri fichier demande d'aide

next-d a écrit :

pas tout a fait
en gros faire des decoupes de phrase pour les regrouper par la suite.

OK, j'ai vu après coup que les mots suivants étaient rejetés après les dernières lignes du fichier initial

#8 Le 21/11/2008, à 12:59

Didoooouuu

Re : tri fichier demande d'aide

ça ressemble à la transposée de matrices de 11 lignes, c'est exact ?

#9 Le 21/11/2008, à 13:00

Didouuu

Re : tri fichier demande d'aide

Je me demandes si OO Calc ne serait pas capable de faire ça

#10 Le 21/11/2008, à 13:29

next-d

Re : tri fichier demande d'aide

la je ne sais pas
smile

Hors ligne

#11 Le 21/11/2008, à 13:57

Didouuuuuuu

Re : tri fichier demande d'aide

#!/usr/bin/python

version_programme="0.9"

import sys
import os
from optparse import OptionParser
import string
import re

def transposee(listes):
   if not listes: return []
   return map(lambda *colonne: list(colonne), *listes)
#end def

def ecrit(listes, le_fichier):
   les_listes_transposees = transposee(listes)
   for ligne in les_listes_transposees:
      for mot in ligne:
         if mot != None:
            le_fichier.write(string.strip(mot) + '\n')
         #end if
      #end for
   #end for
   le_fichier.write('\n')
#end def

def parse_ligne_de_commande():

   parser = OptionParser(usage = '%prog [options] <fichier1> ...<fichierN>', version = '%prog ' + version_programme)

   parser.add_option("--standard-input", "-i", action = 'store_true', dest = "standard_input", default = False,
                     help = "lit les donnees aussi sur l'entree standard")

   parser.add_option("--output-file", "-o", type = 'string', action = 'store', 
                     dest = "fichier_resultat", metavar = "<fichier resultat>", default = "",
                     help = "fichier dans lequel enregistrer le resultat. En absence, c'est la sortie a l'ecran") 

   return parser.parse_args() # (options, args)

#end def parse_ligne_de_commande()

# C'est la que ca commence
########################################

(options, args) = parse_ligne_de_commande()

les_fichiers_a_traiter = []

if options.standard_input == True:
   les_fichiers_a_traiter.append(sys.stdin)
#end if

for un_nom_de_fichier_a_traiter in args:
   les_fichiers_a_traiter.append(open(un_nom_de_fichier_a_traiter, 'r'))
#end for

if options.fichier_resultat != '':
   le_fichier_resultat = open(options.fichier_resultat, 'w')
else:
   le_fichier_resultat = sys.stdout
#end if

les_onze_lignes = []

for le_fichier_a_traiter in les_fichiers_a_traiter:
   la_ligne = le_fichier_a_traiter.readline()
   num_ligne = 1
   while la_ligne != '':
      les_onze_lignes.append(string.split(la_ligne," "))
      num_ligne += 1
      if num_ligne == 11:
         ecrit(les_onze_lignes, le_fichier_resultat)
         les_onze_lignes = []
         num_ligne == 1
      #end if
      la_ligne = le_fichier_a_traiter.readline()
   #end while
   if les_onze_lignes != []:
         ecrit(les_onze_lignes, le_fichier_resultat)
   #end if
#end for

Tu copies ça dans un fichier, tu lui donnes le droit en exécution et ça doit répondre à ton problème.
Un bug, cependantt: j'ai remarqué qu'il n'aime pas les tabulations.

#12 Le 21/11/2008, à 13:58

Totor

Re : tri fichier demande d'aide

Essaie ceci :

#!/bin/bash

FICHIER_SRC="$1"
FICHIER_DST="$2"

[ ! -f "${FICHIER_SRC}" ] && {echo "Fichier source erroné.";exit 1;}

NB_COL=$(head -1 "${FICHIER_SRC}"|awk '{print NF}')

INDEX=1
[ -f "${FICHIER_DST}" ] && rm -f "${FICHIER_DST}"
touch "${FICHIER_DST}"
while [ ${INDEX} -le ${NB_COL} ]; 
do
	cut -f${INDEX} -d' ' "${FICHIER_SRC}" >> "${FICHIER_DST}"
	INDEX=$((INDEX+1))
done

où ceci s'il y a plus d'un espace entre chaque colonne à extraire :

#!/bin/bash

FICHIER_SRC="$1"
FICHIER_DST="$2"

[ ! -f "${FICHIER_SRC}" ] && {echo "Fichier source erroné.";exit 1;}

NB_COL=$(head -1 "${FICHIER_SRC}"|awk '{print NF}')

INDEX=1
[ -f "${FICHIER_DST}" ] && rm -f "${FICHIER_DST}"
touch "${FICHIER_DST}"
while [ ${INDEX} -le ${NB_COL} ]; 
do
	awk -vNUMCOL=${INDEX} '{ print $NUMCOL }' "${FICHIER_SRC}" >> "${FICHIER_DST}"
	INDEX=$((INDEX+1))
done

à utiliser comme suit (depuis le dossier du script) :

./nomScript fichierSource fichierDestination


-- Lucid Lynx --

Hors ligne