Script-bash

Résolu
pheslot Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   -  
pheslot Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   -
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 avril

Merci d'avance

10 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    sed -i.BAK '$!{N;N;s/\n/ /g}' fichier
    ;-))
    0
  2. pheslot Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   5
     
    Merci jipicy,

    But, sed -i.BAK, ça me parait bizare !!
    Tu peux m'expliquer, STP
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Ça crée une sauvegarde de ton fichier original, qui pour la circonstance est renommé en "fichier.BAK", au cas ou ... ;-))
    0
  4. pheslot Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   5
     
    Voilà ce que cela me donne

    # sed -i.BAK '$!{N;N;s/\n/ /g}' t1.txt
    sed: unknown option -- i
    usage: sed script [-anu] [file ...]
    sed [-anu] [-e script] ... [-f script_file] ... [file ...]
    # sed '$!{N;N;s/\n/ /g}' t1.txt
    sed: 1: "$!{N;N;s/\n/ /g}": bad flag in substitute command: '}'
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Quelle version de "sed" as-tu ? (sed --version)
    0
  7. pheslot Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   5
     
    Désolé, pas de version de sed, je bosse sous OpenBSD 4.2.
    Mais j'ai VMWare, dis moi sous quel Linux tu bosses
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Mandriva, mais bon c'est la version de sed qui importe, et dans mon cas c'est GNU sed. Pour l'option "-i" c'est pas grave tu n'as qu'a diriger la sortie ves un autre fichier...

    Essaie comme ça sinon :
    sed '$!{N;N; :z; s/\n/ /;t z}'
    ou encore :
    sed -e '$!N;N;' -e ':z' -e ' s/\n/ /; t z'
    ;-))
    0
  9. pheslot Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   5
     
    Super, merci beaucoup, c'est sed -e '$!N;N;' -e ':z' -e ' s/\n/ /; t z' qui a fonctionné
    :-))))
    0
  10. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    De rien ;-))
    0
  11. pheslot Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   5
     
    Bonne solution : sed -e '$!N;N;' -e ':z' -e ' s/\n/ /; t z'
    0