A voir également:
- Sed retour chariot
- Retour chariot excel - Guide
- Raccourci clavier retour en arrière - Guide
- Retour à la ligne google sheet ✓ - Forum Bureautique
- Echo retour à la ligne ✓ - Forum Shell
- Retour à la ligne css - Forum CSS
5 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 894
20 déc. 2007 à 22:23
20 déc. 2007 à 22:23
Salut,
Si tu tiens absolument à le faire avec "sed" :
Si tu tiens absolument à le faire avec "sed" :
sed -i.BAK ':z;N;s/\n/ /;bz' fichier;-))
vignemail1
Messages postés
1246
Date d'inscription
vendredi 8 octobre 2004
Statut
Contributeur
Dernière intervention
13 septembre 2019
259
20 déc. 2007 à 22:16
20 déc. 2007 à 22:16
cat source.txt|tr "\n" " ">dest.txt
Bonsoir
Votre commande ne peut pas faire ce à quoi vous vous attendiez pourtant. La simple raison est que le caractère \n ne fait pas partie de la chaîne examinée par sed. Une solution serait, avec une boucle while, d'inclure toutes les lignes dans le "pattern buffer" (désolé de l'anglicisme), puis de supprimer ce fameux caractère \n. C'est envisageable pour un petit fichier... car tout el fichier doit tenir en mémoire. C'est donc pas une solution universelle.
Une solution qui marche, mais on peut certainement faire mieux :
awk 'BEGIN {ORS=" "} {print} END {print "\n"}' <fichier>
Explications :
Dans la section BEGIN, on définit le séparateur d'enregistrement en sortie (la variable ORS) à <espace>.
Dans la section principale, pour chaque ligne du fichier en entrée, il n'y a qu'une action : imprime
Dans la section END, pour faire propre, on imprime un retour à la ligne.
(-: un simple "man awk" vous aurait mis sur la piste de cette solution
En espérant que cela serve
Ciao
Votre commande ne peut pas faire ce à quoi vous vous attendiez pourtant. La simple raison est que le caractère \n ne fait pas partie de la chaîne examinée par sed. Une solution serait, avec une boucle while, d'inclure toutes les lignes dans le "pattern buffer" (désolé de l'anglicisme), puis de supprimer ce fameux caractère \n. C'est envisageable pour un petit fichier... car tout el fichier doit tenir en mémoire. C'est donc pas une solution universelle.
Une solution qui marche, mais on peut certainement faire mieux :
awk 'BEGIN {ORS=" "} {print} END {print "\n"}' <fichier>
Explications :
Dans la section BEGIN, on définit le séparateur d'enregistrement en sortie (la variable ORS) à <espace>.
Dans la section principale, pour chaque ligne du fichier en entrée, il n'y a qu'une action : imprime
Dans la section END, pour faire propre, on imprime un retour à la ligne.
(-: un simple "man awk" vous aurait mis sur la piste de cette solution
En espérant que cela serve
Ciao
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 894
20 déc. 2007 à 22:57
20 déc. 2007 à 22:57
Salut,
Votre commande ne peut pas faire ce à quoi vous vous attendiez pourtant. La simple raison est que le caractère \n ne fait pas partie de la chaîne examinée par sed.
Si si ça le fait ;-)
Une solution serait, avec une boucle while, d'inclure toutes les lignes dans le "pattern buffer" (désolé de l'anglicisme), puis de supprimer ce fameux caractère \n.
C'est exactement ce que fait la commande au-dessus ;-)
C'est envisageable pour un petit fichier... car tout el fichier doit tenir en mémoire. C'est donc pas une solution universelle.
Avec GNU sed il n'y a pas de limite au niveau des tampons ;-)
Votre commande ne peut pas faire ce à quoi vous vous attendiez pourtant. La simple raison est que le caractère \n ne fait pas partie de la chaîne examinée par sed.
Si si ça le fait ;-)
Une solution serait, avec une boucle while, d'inclure toutes les lignes dans le "pattern buffer" (désolé de l'anglicisme), puis de supprimer ce fameux caractère \n.
C'est exactement ce que fait la commande au-dessus ;-)
C'est envisageable pour un petit fichier... car tout el fichier doit tenir en mémoire. C'est donc pas une solution universelle.
Avec GNU sed il n'y a pas de limite au niveau des tampons ;-)
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 567
20 déc. 2007 à 22:06
20 déc. 2007 à 22:06
Salut,
lami20j@debian:~/trash2/vider$ cat a ligne1 ligne2 ligne3 lami20j@debian:~/trash2/vider$ perl -pi.orig -e 's/\n/ /' a lami20j@debian:~/trash2/vider$ cat a ligne1 ligne2 ligne3 lami20j@debian:~/trash2/vider$
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour !
Merci beaucoup pour toutes vos réponses !!! Je vais toutes les étudier en détail.
La solution tr est la plus simple et c'est celle que je vais utiliser dans l'immédiat.
Par contre j'avais en effet imaginé que awk pourrait faire un travail du genre sur mes fichiers mais ... awk ça me fait un peu peur :P donc je m'imaginais la solution très compliquée (à raison ? :) )
J'ouvre un autre topic qui fait suite à celui-ci et surtout à vos réponses.
En tous cas merci !!! :-))
Maximilien.
Merci beaucoup pour toutes vos réponses !!! Je vais toutes les étudier en détail.
La solution tr est la plus simple et c'est celle que je vais utiliser dans l'immédiat.
Par contre j'avais en effet imaginé que awk pourrait faire un travail du genre sur mes fichiers mais ... awk ça me fait un peu peur :P donc je m'imaginais la solution très compliquée (à raison ? :) )
J'ouvre un autre topic qui fait suite à celui-ci et surtout à vos réponses.
En tous cas merci !!! :-))
Maximilien.