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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  script awk pour regrouper des mots

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

script awk pour regrouper des mots

n°1072370
misterZida​ne
Posté le 07-09-2008 à 15:47:04  profilanswer
 

Bonjour à toutes et à tous ! :hello:  
J'ai un fichier du genre :
 
toto
titi
tata
tutu
tyty
tete
 
Ce que je souhaite faire est de couper toutes les 3 lignes pour former une ligne regroupant les mots de ces 3 lignes. Dans l'exemple précédent j'aurai quelque chose du genre :
 
toto titi tata
tutu tyty tete
 
Avez-vous une idée ou existe-t-il une commande simple pour faire cela...?
 
Merci en tout cas pour toute aide

mood
Publicité
Posté le 07-09-2008 à 15:47:04  profilanswer
 

n°1087977
sputnick
bip...bip...bip...bip...bi...b
Posté le 06-11-2008 à 22:50:29  profilanswer
 

Yop,
 
je te propose cette solution :
 

Code :
  1. #!/bin/bash
  2. TAB=( $(< /tmp/fichier_a_parser) )      # on crer un tableau TAB
  3. c=                                              # on initialise $c au cas ou
  4. while ((c != ${#TAB[@]})) ; do                  # tant que $c est different de la derniere clef du tableau
  5.     echo "${TAB[c++]} ${TAB[c++]} ${TAB[c++]}"  # on concatene les valeures incrementales du tableau
  6. done                                            # fin de while :)


 
Au fait, désolé, c'est pas du awk mais du bash pur jus :D
 
Je vais même pousser le vice à te proposer une solution en perl uniligne : ( dans un terminal )

Code :
  1. $ perl -e 'while(<> ) { chomp; push(@a, $_); }; while($c < $#a) { print join("\t", $a[$c++], $a[$c++], $a[$c++]) . "\n"; }' fichier


Message édité par sputnick le 07-11-2008 à 04:15:17
n°1141610
hardball
Posté le 10-06-2009 à 17:08:53  profilanswer
 

ou encore

Code :
  1. perl -pe '$.%3!=0&&s/\n/$"/' fichier


Message édité par hardball le 10-06-2009 à 23:11:31
n°1141858
sputnick
bip...bip...bip...bip...bi...b
Posté le 11-06-2009 à 17:04:24  profilanswer
 

Deterrage de post ? Haannn ! Mon perl a évolué depuis, par contre je veux bien que tu explique ton one-liner hardball

n°1142250
misterZida​ne
Posté le 13-06-2009 à 11:22:49  profilanswer
 

Salut et merci pour vos réponse.
Moi aussi je veux bien que tu m'explique ta commande hardball....:)
Merci en tout cas


Message édité par misterZidane le 13-06-2009 à 11:23:23
n°1142307
sputnick
bip...bip...bip...bip...bi...b
Posté le 13-06-2009 à 21:51:01  profilanswer
 

Ah, ok, en décortiquant/espaçant c'est plus clair :

Code :
  1. perl -pe '$. % 3 != 0 && s/\n/$"/' fichier


Autrement dit, on fait un modulo avec "3" sur la variable speciale $. ( le nombre de lignes ).
Si l'expression ne renvoie pas zero, on substitue les retours à la lignes "\n" par le separateur de liste par defaut ( un espace )
ce qui en resulte pas l'affichage de 3 valeures sur la meme ligne et ainsi de suite.
Tres interessant, et tres élégant.


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

  script awk pour regrouper des mots

 

Sujets relatifs
Lancer un script shell dans un programme cscript shell sftp - vérification dépose fichier
mac script selon source d'alimentationCreer des fils, des sous shell pour acceler script
Erreur de segmentation sur script bashArgument dans un script
Un petit script de synchronisation de repertoires sur 2 serveursScript BAT, reprise après démarrage ?
[Script] Uploader une image sur imagup.com 
Plus de sujets relatifs à : script awk pour regrouper des mots


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