Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/05/2011, 22h18   #1
Membre du Club
 
Inscription : avril 2008
Messages : 150
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 150
Points : 64
Points : 64
Par défaut [Unix][Awk] Suppression de EOL dans certain cas

Salut à tous,

Je me permet de vous ecrire ce message car j'ai du mal à changer ca :
Code :
1
2
3
4
5
6
7
8
9
10
rue.numero := (1,2,3,4,5,
6,7,8,9,10,
11,12);
console.marque :="nintendo";
alphabet.valeur := (a,b,c,d,e,
f,g,h,i,j,
k,l,m,n,o,
p,q,r,s,t,
u,v,w,x,y,
z);
en
Code :
1
2
3
rue.numero := (1,2,3,4,5,6,7,8,9,10,11,12);
console.marque :="nintendo";
alphabet.valeur := (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z);
Dans le premier cas il y a saut a la ligne apres 5 valeurs

bon ben j'ai essayé sed mais je crois que c'est pas faisable
Javai un truc du genre
Code :
sed -e 's/\n//g' fichier.txt
Je pense que awk peut m'aider
J'ai ca
Code :
awk 'BEGIN{FS=","};NF>5{gsub(/\n/,"",g)};END{FS="\n";$0}' fichier.txt
Mais bref j'y arrive pas.
Quelqu'un pourrait m'aider? De plus je souhaite faire le tout en ligne de commande alors si c'est un script la solution pourrait-on m'aider à le transformer en ligne de commande?

D'avance merci

Bonne soirée
-={-_-}=- est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 04/05/2011, 22h55   #2
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Code :
1
2
 awk 'BEGIN{ RS=";"  }{ gsub("\n","",$0) ; print $0 RS  }' eol.txt
becket est déconnecté   Envoyer un message privé Réponse avec citation 21
Vieux 04/05/2011, 23h01   #3
Membre du Club
 
Inscription : avril 2008
Messages : 150
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 150
Points : 64
Points : 64
Citation:
Envoyé par becket Voir le message
Code :
1
2
 awk 'BEGIN{ RS=";"  }{ gsub("\n","",$0) ; print $0 RS  }' eol.txt
Bravo champion c'est ca!
Tu n'imagines pas le nombre d'heures que j'ai passé dessus mais j'ai appris enormément de commande unix grace à ca.

Avant de mettre la balise resolu, pourrais-tu m'expliquer ta requete awk?

Merci
-={-_-}=- est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 04/05/2011, 23h17   #4
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Pour le fun avec "sed" :

Code :
sed ':z;/;$/!N;/;$/!bz;s/\n//g'


Édit : je suis un âne, ça devait être l'heure tardive... ou l'âge

Code :
sed ':z;/;$/!{N;bz};s/\n//g'
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 05/05/2011, 07h29   #5
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 965
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 965
Points : 1 365
Points : 1 365
Une autre méthode avec awk:
Code :
1
2
awk '/,$/ {printf("%s",$0);next;}
{print}' fichier.txt
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 05/05/2011, 16h31   #6
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Citation:
Envoyé par becket Voir le message
Code :
1
2
 awk 'BEGIN{ RS=";"  }{ gsub("\n","",$0) ; print $0 RS  }' eol.txt
C'est assez simple, je spécifie qu'un enregistrement ne se termine pas par un retour à la ligne mais par un ; ( RS=";" ) ensuite, je transforme tous les retour à la ligne ( \n ) par rien ( "" ) avec gsub("\n","",$0) .

Pour finir j'affiche l'enregistrement et je lui ajoute le séparateur RS.
becket est déconnecté   Envoyer un message privé Réponse avec citation 21
Vieux 15/05/2011, 18h53   #7
Membre du Club
 
Inscription : avril 2008
Messages : 150
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 150
Points : 64
Points : 64
Merci pour toutes ces explications.
-={-_-}=- est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h53.


 
 
 
 
Partenaires

Hébergement Web