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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [awk (ou autre)] comment lire une ligne sur 3 d'un fichier texte ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[awk (ou autre)] comment lire une ligne sur 3 d'un fichier texte ?

n°1187515
cactus
Posté le 22-12-2009 à 14:22:04  profilanswer
 

Bonjour à tous,
 
Je n'y connais rien en programmation, et j'aimerais pouvoir lire une ligne sur 3 d'un fichier texte (et enregistrer la sorite dans un autre fichier).
Y aurait-il un gourou de la programmation dans le coin ?
 
Merci ! :jap:

mood
Publicité
Posté le 22-12-2009 à 14:22:04  profilanswer
 

n°1187520
wedgeant
Da penguin inside
Posté le 22-12-2009 à 14:41:32  profilanswer
 

en algorithmique simple, tu peux faire ça comme ça :

compteur = 0
tant que non(fin de fichier) {
    lire une ligne
    si compteur = 0 alors ecrire la ligne sur le fichier blabla
    compteur++
    si compteur = 2 alors compteur <- 0
}

 

à toi de traduire dans ton langage préféré :o


Message édité par wedgeant le 22-12-2009 à 14:41:37

---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1187523
cactus
Posté le 22-12-2009 à 14:47:23  profilanswer
 

mon langage préféré ? le français !  [:le scoub 2]  
 
désolé, je suis ignare en terme de programmation, ce n'est pas mon métier !  
A part quelques rudiments de bash, je ne sais pas faire grand chose... :(

n°1187531
wedgeant
Da penguin inside
Posté le 22-12-2009 à 15:08:17  profilanswer
 

cactus a écrit :

désolé, je suis ignare en terme de programmation, ce n'est pas mon métier !


euh ouais m'enfin là quand même, ça va devenir compliqué quoi [:mlc]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1187533
cactus
Posté le 22-12-2009 à 15:22:24  profilanswer
 

Je sais juste que awk est capable de le faire, mais je n'ai pas les compétences pour l'écrire.
Je lis les manuels (en anglais, pas facile ! :/ ), mais je ne trouve pas mon bonheur.
Et pourtant, ça n'est pas si complexe dans le principe, c'est du style :
i=1
tant que i<978 (mon nb de lignes)
   cat ou print de la ligne i > enregistrer dans l'output.txt
   i=i+3

 


Message édité par cactus le 22-12-2009 à 15:23:26
n°1187534
wedgeant
Da penguin inside
Posté le 22-12-2009 à 15:27:22  profilanswer
 

ton bout de machin là, ça ressemblerait pas à ce que j'ai posté tout en haut, mais en plus pourri des fois ? [:gratgrat]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1187540
cactus
Posté le 22-12-2009 à 15:32:49  profilanswer
 

possible ! :D  
 
(j'avais pas compris ton exemple, mais là, en le relisant, je viens de piger !  [:bambookillah]  )
 
donc oui, c'est bien ce que je veux faire, mais il me manque jsute les commandes bash/awk/autre...  :sweat:

n°1187544
wedgeant
Da penguin inside
Posté le 22-12-2009 à 15:36:25  profilanswer
 

Et juste pour savoir, pourquoi on te demande ça à toi alors que tu ne sais pas programmer ? [:petrus dei]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1187546
memaster
ki a volé mon 62?
Posté le 22-12-2009 à 15:38:03  profilanswer
 

wedgeant a écrit :

Et juste pour savoir, pourquoi on te demande ça à toi alors que tu ne sais pas programmer ? [:petrus dei]


c'est un exo pour apprendre :o


---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
n°1187550
cactus
Posté le 22-12-2009 à 15:42:01  profilanswer
 

non, je bosse sur des calculs de structures (modèles éléments finis) et là, on me demande de trier des résultats en format texte pour les inclure dans des feuilles excel (ce que je n'ai jamais fait en 10 ans de carrière) :o

mood
Publicité
Posté le 22-12-2009 à 15:42:01  profilanswer
 

n°1187552
memaster
ki a volé mon 62?
Posté le 22-12-2009 à 15:42:53  profilanswer
 

cactus a écrit :

non, je bosse sur des calculs de structures (modèles éléments finis) et là, on me demande de trier des résultats en format texte pour les inclure dans des feuilles excel (ce que je n'ai jamais fait en 10 ans de carrière) :o


et matlab ne sais pas faire ça (euh, du taillage dans du txt brut)? :??:


Message édité par memaster le 22-12-2009 à 15:43:21

---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
n°1187555
cactus
Posté le 22-12-2009 à 15:46:55  profilanswer
 

matlab... ça fait 10 ans que je n'y ai plus touché (c'était en école !) :D
c'est encore utilisé ? ça fait un bail que je ne l'ai plus vu tourner !
(cela dit, même avec matlab, je ne sais pas faire, c'est dire...)

 

Pour info, ma spécialité, c'est NASTRAN (code de calcul), dans toutes ses formes... analyses linéaires ou non, avec contact ou non, etc... voilà ! chacun ses compétences ! ;)


Message édité par cactus le 22-12-2009 à 15:47:33
n°1187557
memaster
ki a volé mon 62?
Posté le 22-12-2009 à 15:52:03  profilanswer
 

un ami utilise encore matlab pour ses calculs matriciels (bon ce sont des très très grandes matrices).
moi je l'avais en effet utilisé pour la dernière fois à l'école de géologie pour des tracés souterrain; des équilignes
de champ electrostatique si je me rapelle bien.


---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
n°1187841
sputnick
bip...bip...bip...bip...bi...b
Posté le 23-12-2009 à 23:38:16  profilanswer
 

Code :
  1. ( echo; echo; cat <FICHIER> ) > <NOUVEAU_FICHIER>
  2. awk '{if (NR%3 == 0) print}' <NOUVEAU_FICHIER


 
Bon ok, les redirections du debut c'est du vieux hack des famille, c'est un workaround sinon awk n'affiche pas la premiere ligne. Mais si vous avez du temps à consacrer, optimisez mon awk ;)


Message édité par sputnick le 23-12-2009 à 23:48:50
n°1188133
Ttienne
C'est pas pour me vanter, mais
Posté le 26-12-2009 à 01:41:56  profilanswer
 

le cahier des charges est imprécis : une ligne sur trois, certes, mais statistiquement une ligne sur trois ? algorithme à tester sur un fichier avec un grand nombre de lignes ? :D
 
sinon, si il faut lire une ligne et en passer deux, ok, mais quelle est celle des 3 premières lignes qu'il faut lire ? [:ddr555]
 


---------------
Y a de la bière, sur Véga, hein ? Si y'en a pas, on y va pas ! Et pis c'est tout ! :P | c'est vendu depuis lgtps
n°1188140
cactus
Posté le 26-12-2009 à 09:05:18  profilanswer
 

merci sputnick et Ttienne. ;)
(et joyeux noêl ! :p )
 
sputnick : je testerai ton code à mon retour de vacances. ;)
Ttienne : non, rien de statistique, j'ai juste une liste de "noms" qui se répète 3 fois (ligne 1 à 3, 4 à 6 etc...). Donc il me suffit de lire une des 3 premières lignes puis de sauter systématiquement 3 lignes. ;)  
Mon fichier fait presque 1000 ligne, soit presque 330 lignes à récupérer. ;)

n°1371775
Julien_423​0
La raison seule donne vérité
Posté le 10-01-2015 à 16:18:02  profilanswer
 

Bonjour,
Pour un fichier avec si peu de lignes, n'importe quel logiciel est capable de faire ça.
 
Prenons R. Je n'ai jamais fait ça, et je n'ai rien sous le coude pour tester, alors essayer ça :
 
MonFichier = read.table('Votre fichier .txt') ;
N = now( MonFichier ) ## longueur du fichier
K = 0 ;
for (i in now( MonFichier ):1) {
  K = K+1 ;
  if (K<3) {
    MonFichier = MonFichier[-i,] ; ## sppression de la ligne i
  }
  if (K>=3) {
    K=0 ;
  }
}

n°1371776
l4nkou
Dr House Fan
Posté le 10-01-2015 à 16:50:50  profilanswer
 

compteur=3;seq 1 30 | awk -v patt="$compteur" 'NR % patt == 0'
 
3
6
9
12
15
18
21
24
27
30


---------------
Les avis, c'est comme les anus, tout le monde en a un.
n°1372360
Nukolau
Posté le 20-01-2015 à 11:32:04  profilanswer
 

cactus a écrit :


Ttienne : non, rien de statistique, j'ai juste une liste de "noms" qui se répète 3 fois (ligne 1 à 3, 4 à 6 etc...). Donc il me suffit de lire une des 3 premières lignes puis de sauter systématiquement 3 lignes. ;)  


 
Bon j'imagine qu'après 10 jours tu as ta solution, mais sinon, tu te complique la vie pour rien. De ce que je lit, il te suffit plutôt de supprimer les doublons. Du coup
 

Code :
  1. uniq ton_fichier_avec_doublon


 
suffit pour répondre à ton besoin :)


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

  [awk (ou autre)] comment lire une ligne sur 3 d'un fichier texte ?

 

Sujets relatifs
Aide sur Filtrage de fichier ![Résolu] Supprimer tout les ":4.3" d'un fichier texte
Fichier utilisé linuxpbs de fichier sur disque dur
Liste d'users par ligne a partir de /etc/grouplire une partition RAW sous linux
Faire un joli rapport texte des nouveaux fichiersVérifier si la derniére d'un fichier est une ligne vide
Plus de sujets relatifs à : [awk (ou autre)] comment lire une ligne sur 3 d'un fichier texte ?


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