Concatener 2 lignes [Shell] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 01-12-2005 à 17:31:37
sinon
echo "AAA BBBB" > fichier
mais je doute que c'est ce que tu veux
Marsh Posté le 01-12-2005 à 17:45:17
Pour remplacer ton retour à la ligne par un espace dans ton_fichier, tu peux par exemple faire :
cat ton_fichier | tr '\n' ' ' |
ou
sed -e 'N;s/\n/ /' ton_fichier |
Est-ce que ça t'aide ?
Marsh Posté le 01-12-2005 à 20:43:58
Mon fichier ressemble plutôt à cela :
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
------------- ddddddddddddddddddd
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
01/12/2005 zzzzzzzzzzzzzzzzzzzzz
je voudrais que cela ressemble à ceci :
ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss ------------- ddddddddddddddddddd
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy 01/12/2005 zzzzzzzzzzzzzzzzzzzzz
je voudrais faire la concatenation sur certaine ligne.
j'essayerai demain --> sed -e 'N;s/\n/ /' ton_fichier.
pillow, comment tu fais pour encadrer du texte ?
Marsh Posté le 02-12-2005 à 05:49:19
Ça dépend un peu de la longueur du fichier, mais tu peux peut être matcher les lignes une par une, quelque chose comme ça :
sed -e ':a;/sssss$\|yyyyy$/N;s/\n[ \t]*/ /;ta' ton_fichier |
(il ne fallait pas s'attendre à du code de qualitaÿ à cette heure là, hein )
Avec bien sûr les regex qui correspondent aux lignes desquelles tu veux enlever le retour à la ligne final.
Si tes lignes se ressemblent trop, tu peux aussi matcher la ligne après le retour à la ligne. Pour un test basique :
sed -e ':a;/sssss$\|yyyyy$/N;/----\|01/s/\n[ \t]*/ /;ta' ton_fichier |
( ; mais il n'y a rien de compliqué en fait, je peux expliquer si tu veux, mais demain soir )
Cependant si tu as systématiquement des espaces ou des tabulations après le retour à la ligne, et que ton fichier est assez gros ou qu'il évolue souvent, tu as intérêt d'utiliser plutôt ce fait. En sed, ça commence à devenir un peu plus compliqué : je te conseillerais plutôt perl pour ça
(pour l'encadrage : balise [ fixed]; tu peux editer ce post pour voir comment ça marche si tu veux)
Marsh Posté le 02-12-2005 à 10:43:35
en AWK (à la va-vite)
Code :
|
Marsh Posté le 02-12-2005 à 22:24:17
j'ai essaye sed -e 'N;s/\n/ /' ton_fichier, cela fonctionne, mais je vais quand même essayer le awk.
merci à vous
Marsh Posté le 01-12-2005 à 17:29:33
Bonjour,
je souhaiterais concatener 2 lignes dans 1 fichier :
AAA
BBBBB
pour avoir : AAA BBBB
je voudrais le faire en shell, avec sed ou awk peut-être...