Flux rss
Collection CommentCaMarche.net

Transformer des colonnes en lignes dans un fichier

Publié par asevere, dernière mise à jour le samedi 15 novembre 2008 à 12:11:27 par Nilou17
Différents outils de Linux sont très doués pour travailler avec des lignes, mais pas avec des colonnes (c'est leur rôle) Sed, Awk, Grep, etc.

Cependant, il peut arriver pour X raisons que vous ayez un fichier où les données sont à lire en colonnes

Un exemple simple:
$ cat in.txt
2008-09-21|2008-09-22|2008-09-23
Dimanche|Lundi|Mardi

Solution


Voici une méthode "simple" pour transformer ce fichier en un fichier de 3 lignes de deux colonnes (date|nom du jour)
$ split -l1 in.txt tmp_
$ sed -i 's/|/\x0A/g' tmp_
$ paste -d'|' tmp_* >out.txt
$ rm -f tmp_*
$ cat out.txt
2008-09-21|Dimanche
2008-09-22|Lundi
2008-09-23|Mardi
Jetez un oeil aux pages man de split et paste, ce sont deux commandes simples, mais Ô combien pratiques :-)

Limitations

  • Sous cette forme, le script ne fonctionnera que si le nombre de lignes en entrée est inférieur à 676. Cela est dû au suffixe ajouté par la commande split qui ne comporte par défaut que 2 caractères, mais en cas de besoin, l'option -a permet d'augmenter cette limite.
  • Pour la commande sed (qui peut-être changée par d'autres commandes assez simplement) selon les versions, deux problèmes peuvent se poser:
    • L'option -i exige un suffixe (.bak, ou autre) en ce cas, il faut bien faire attention à modifier la commande paste pour ne prendre en compte que les fichiers générés par split et non ceux par sed (tmp_?? par exemple)
    • La version ne supporte pas la notation octale '\012' ou hexadécimale '\x0A' dans ce cas, le plus simple que j'ai trouvé, c'est d'échapper le retour chariot comme suit: taper un backslash, puis les deux combinaisons suivantes <Ctrl+V> <Ctrl+J>(ou appuyer sur entrée), puis terminer la commande.

Résultats pour Transformer des colonnes en lignes dans un fichier

[commande UNIX] transformer colonne en ligne (Résolu) Bonjour, j'ai extrait une colonne d'un fichier avec awk cependant, j'aimerais pouvoir transformer ce fichier colonne en fichier ligne pour l'utilisé comme vecteur dans matlab. existe-t-il une procédure et/ou commande permettant de... www.commentcamarche.net/forum/affich-2747974-commande-unix-transformer-colonne-en-ligne
Excel: transformer ligne en colonne (Résolu) Bonjour, Je voudrais la fonction dans EXCEL qui permet de transformer une ligne en colonne. Exemple la fonction transformera la ligne X = (a, b, c, d, e) en colonne Y = (a, b, c, d, e). Merci de me répondre; cela fait un bon temps que j'essaye de... www.commentcamarche.net/forum/affich-6190149-excel-transformer-ligne-en-colonne
Colonnage (Résolu) Bonjour, Je voudrais "colonner" un fichier texte contenant ce genre de lignes (la génération du fichier ne peu être modifiée) : lundi 3 mars mardi 5 juin dimanche 15 avril c'est à dire récupérer ça : lundi 3 mars mardi 5 juin dimanche 15 avril... www.commentcamarche.net/forum/affich-4338893-colonnage

Résultats pour Transformer des colonnes en lignes dans un fichier

[Bash] Afficher un fichier sans les lignes de commentairesIl est parfois utile d'afficher un fichier sans pour autant afficher la myriade de lignes de commentaire l'accompagnant (en particulier pour les fichiers de configuration de notre OS préféré ;-) ), ainsi qu'en le délestant de ses lignes... www.commentcamarche.net/faq/sujet-3027-bash-afficher-un-fichier-sans-les-lignes-de-commentaires
Comment lire un fichier ligne par ligneComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier... www.commentcamarche.net/faq/sujet-5027-comment-lire-un-fichier-ligne-par-ligne
Sed - Supprimer une ou plusieurs lignes d'un fichierSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la... www.commentcamarche.net/faq/sujet-4839-sed-supprimer-une-ou-plusieurs-lignes-d-un-fichier

Résultats pour Transformer des colonnes en lignes dans un fichier

Script-bash (Résolu)Bonjour, Bonjour, Je voudrais "colonner" un fichier texte contenant ce genre de lignes (la génération du fichier ne peu être modifiée) : lundi 3 mars mardi 5 juin dimanche 15 avril c'est à dire récupérer ça : lundi 3 mars mardi 5 juin dimanche 15... www.commentcamarche.net/forum/affich-4339991-script-bash
Probléme mecture fichier .jpg (Résolu)bonjour, j'ai un ordinateur qui depuis 15j m'a transformé tous mes fichiers .jpg c'est a dire que dans mes dossiers il me marque par exemple eau.jpg mais quand je 'ouvre i s'ouvre sous word docn pas d'image mais des... www.commentcamarche.net/forum/affich-2781084-probleme-mecture-fichier-jpg
Heure AM/PM en français (Résolu)Bonjour, Sous Unix comment transformer dans un fichier texte une heure du genre : 09:00 PM ou 03:00 AM en 21:00 et 3:00 ? Merci d'avance www.commentcamarche.net/forum/affich-4915460-heure-am-pm-en-francais