Pages : 1
#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
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
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
Pages : 1