Script-bash

Résolu/Fermé
pheslot Messages postés 61 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 6 juillet 2011 - 17 déc. 2007 à 13:56
pheslot Messages postés 61 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 6 juillet 2011 - 17 déc. 2007 à 16:55
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

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 déc. 2007 à 14:16
Salut,
sed -i.BAK '$!{N;N;s/\n/ /g}' fichier
;-))
0
pheslot Messages postés 61 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 6 juillet 2011 5
17 déc. 2007 à 15:03
Merci jipicy,

But, sed -i.BAK, ça me parait bizare !!
Tu peux m'expliquer, STP
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 déc. 2007 à 15:08
Ça crée une sauvegarde de ton fichier original, qui pour la circonstance est renommé en "fichier.BAK", au cas ou ... ;-))
0
pheslot Messages postés 61 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 6 juillet 2011 5
17 déc. 2007 à 15:18
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 déc. 2007 à 15:29
Quelle version de "sed" as-tu ? (sed --version)
0
pheslot Messages postés 61 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 6 juillet 2011 5
17 déc. 2007 à 15:55
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 déc. 2007 à 16:07
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
pheslot Messages postés 61 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 6 juillet 2011 5
17 déc. 2007 à 16:53
Super, merci beaucoup, c'est sed -e '$!N;N;' -e ':z' -e ' s/\n/ /; t z' qui a fonctionné
:-))))
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
17 déc. 2007 à 16:54
De rien ;-))
0
pheslot Messages postés 61 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 6 juillet 2011 5
17 déc. 2007 à 16:55
Bonne solution : sed -e '$!N;N;' -e ':z' -e ' s/\n/ /; t z'
0