Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1492 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [Shell] Concatener 2 lignes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Shell] Concatener 2 lignes

n°758108
oudjat
Posté le 01-12-2005 à 17:29:33  profilanswer
 

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...  :??:  

mood
Publicité
Posté le 01-12-2005 à 17:29:33  profilanswer
 

n°758110
l0ky
Posté le 01-12-2005 à 17:31:09  profilanswer
 

D'où viennent ces deux lignes ?

n°758111
l0ky
Posté le 01-12-2005 à 17:31:37  profilanswer
 

sinon
echo "AAA BBBB" > fichier
mais je doute que c'est ce que tu veux :/

n°758114
Pillow
'cos the trees won't talk
Posté le 01-12-2005 à 17:45:17  profilanswer
 

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 ?


Message édité par Pillow le 02-12-2005 à 05:50:04
n°758192
oudjat
Posté le 01-12-2005 à 20:43:58  profilanswer
 

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 ?

n°758266
Pillow
'cos the trees won't talk
Posté le 02-12-2005 à 05:49:19  profilanswer
 

Ç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 :o )
 
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

( [:ciler]; mais il n'y a rien de compliqué en fait, je peux expliquer si tu veux, mais demain soir [:petrus75] )
 
 
 
 
 
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 :o  
 
 
 
 
(pour l'encadrage : balise [ fixed]; tu peux editer ce post pour voir comment ça marche si tu veux)

n°758307
jlighty
Posté le 02-12-2005 à 10:43:35  profilanswer
 

en AWK (à la va-vite)

Code :
  1. BEGIN{couple=0;}
  2. {
  3. if (couple==1)
  4. {
  5. printf "%s %s \n",ligne_precedente,$0;
  6. couple=0;
  7. }
  8. else
  9. {
  10. ligne_precedente=$0;
  11. couple=1;
  12. }
  13. }


Message édité par jlighty le 02-12-2005 à 13:29:01
n°758550
oudjat
Posté le 02-12-2005 à 22:24:17  profilanswer
 

j'ai essaye sed -e 'N;s/\n/ /' ton_fichier, cela fonctionne, mais je vais quand même essayer le awk.
merci à vous  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [Shell] Concatener 2 lignes

 

Sujets relatifs
[Sed] Afficher plusieurs lignes de texte dans des balises[Résolu] [script shell AIX]
Equivalent d'exceed + scripting shellUn Shell en couleur, est-ce possible ?
[Résolu] Shell Script : Sous-chaîne"Bad interpreter" lors du lancement d'un script shell
[script shell] Comment echapper une chaine de caractères ?problème shell bash sur variables
[RESOLU] Shell et historique des commandesunix shell
Plus de sujets relatifs à : [Shell] Concatener 2 lignes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR