Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
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 17/08/2011, 17h14   #1
Futur Membre du Club
 
Inscription : mai 2009
Messages : 51
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 51
Points : 19
Points : 19
Par défaut Effacer le dernier caractère d'un fichier.

Bonjour,

J'utilise un fichier paramètre pour une application, or lors de mon extraction des paramètres, un espace se met à la fin.
C'est assez embêtant car ca fait planter mon appli arrivé à l'espace (boucle sur la liste de param).

Je stock une liste de paramètres dans un fichier "Liste_table"
Je souhaiterai avoir le même contenu que ce fichier, avec l'espace final en moins, genre
Code :
fonction_enleve_derniere_caractere(Liste_table) > Liste_table
J'ai trouvé sur le net des bouts de code genre :
Code :
expr "bouh" : "\(.*\).$"
Qui permettent d'enlever le dernier caractère, mais j'arrive pas à l'appliquer sur mon fichier.

Pouvez vous me guider sur la façon de faire ?

merci d'avance.
bstevy est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/08/2011, 17h42   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
Bonjour,

le mieux serait de voir, en amont, pourquoi un espace s'ajoute.

à quoi ressemble le fichier ?
comment extrais-tu les données ?
etc
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 18/08/2011, 08h59   #3
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
Code :
sed '$!d;s/.$//' fichier > fichier_pur
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 09h22   #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,

Citation:
Envoyé par frp31 Voir le message
Code :
sed '$!d;s/.$//' fichier > fichier_pur
A part que là tu ne récupères que la dernière ligne dans fichier_pur

Code :
sed '$ s/.$//' fichier > fichier_pur
__________________
$ 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 10
Vieux 18/08/2011, 09h23   #5
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
Citation:
Envoyé par zipe31 Voir le message
Salut,

A part que là tu ne récupères que la dernière ligne dans fichier_pur

Code :
sed '$ s/.$//' fichier > fichier_pur
le dernier caractère d'un fichier est forcément sur la dernière ligne , le reste de la selection et les autres traitements sur le fichier ne sont pas décrit puisque chaque besoin est différent.
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 09h33   #6
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
Tu ne m'a pas compris, ta syntaxe est fausse concernant la récupération du fichier :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$ cat plop 
blabla
blibli
blublu
blybly
$ sed '$!d;s/.$//' plop 
blybl
$ sed '$ s/.$//' plop 
blabla
blibli
blublu
blybl
$
__________________
$ 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 10
Vieux 18/08/2011, 10h01   #7
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
Citation:
Envoyé par zipe31 Voir le message
Tu ne m'a pas compris, ta syntaxe est fausse concernant la récupération du fichier :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$ cat plop 
blabla
blibli
blublu
blybly
$ sed '$!d;s/.$//' plop 
blybl
$ sed '$ s/.$//' plop 
blabla
blibli
blublu
blybl
$
non je fais exprès comme ça pour permettre d'autres traitements sur le fichier ce que ta méthode ne permet pas puisque tu récupères TOUT le fichier et donc une seconde passe en cas d'autres traitements serai nécéssaire
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 10h15   #8
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
Citation:
Envoyé par frp31 Voir le message
non je fais exprès comme ça pour permettre d'autres traitements sur le fichier ce que ta méthode ne permet pas puisque tu récupères TOUT le fichier et donc une seconde passe en cas d'autres traitements serai nécéssaire
Désolé mais moi pas comprendre

Ton fichier fichier_pur ne contenant qu'une ligne (la dernière en l'occurrence), expliques-moi comment tu peux y effectuer un autre traitement ?

En récupérant TOUT on peut faire d'autres traitements, en ne récupérant qu'une ligne on ne peut traiter que cette ligne...

Désolé s'il y a confusion, mais là je ne pige vraiment pas ton raisonnement
__________________
$ 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 10
Vieux 18/08/2011, 11h54   #9
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
Citation:
Envoyé par zipe31 Voir le message
Désolé mais moi pas comprendre

Ton fichier fichier_pur ne contenant qu'une ligne (la dernière en l'occurrence), expliques-moi comment tu peux y effectuer un autre traitement ?

En récupérant TOUT on peut faire d'autres traitements, en ne récupérant qu'une ligne on ne peut traiter que cette ligne...

Désolé s'il y a confusion, mais là je ne pige vraiment pas ton raisonnement
vu la question il n'y pas que ce traitement à faire ça n'est qu'une intervention sur le fichier mais y'en a d'autres...
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 11h58   #10
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
Citation:
Envoyé par frp31 Voir le message
vu la question il n'y pas que ce traitement à faire ça n'est qu'une intervention sur le fichier mais y'en a d'autres...
Ben justement si tu réduis ledit fichier à une seule ligne après ton traitement il va être difficile d'enchaîner d'autres traitements, non ?
__________________
$ 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 10
Vieux 18/08/2011, 12h11   #11
Futur Membre du Club
 
Inscription : mai 2009
Messages : 51
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 51
Points : 19
Points : 19
Merci messieurs pour ces infos.
ca m'a été très utile, et j’espère que ça le sera aussi pour d'autres membres.


@N_BaH
PI : le fichier est généré par Datastage, et pas par moi. J'ai simplifié les explications pour pas encombrer ^^
bstevy est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 14h44   #12
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
Citation:
Envoyé par zipe31 Voir le message
Ben justement si tu réduis ledit fichier à une seule ligne après ton traitement il va être difficile d'enchaîner d'autres traitements, non ?
les autres traitements sont à faire en même temps ou avant sur tout SAUF la dernière ligne et traiter la dernière ligne et tout envoyer sur le fichier résultat ...

le traitement n'est pas forcément séquenciel
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 14h59   #13
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
Citation:
Envoyé par frp31 Voir le message
les autres traitements sont à faire en même temps ou avant sur tout SAUF la dernière ligne et traiter la dernière ligne et tout envoyer sur le fichier résultat ...
Avec ta syntaxe ce n'est pas possible

le "$!d" supprime tout ce qui existe avant la dernière ligne, difficile de traiter quoi que ce soit dans ce cas là, que ce soit avant ou après

Un exemple :

Le fichier de départ :
Code :
1
2
3
4
5
$ cat plop 
blabla
blibli
blublu
blybly
On va donc remplacer les "a" par des "o" et supprimer le dernier caractère de la dernière ligne (oui je sais... )

Ta méthode :
Code :
1
2
$ sed '$!d;s/.$//;s/a/o/g' plop 
blybl
Même en mettant la substitution avant :
Code :
1
2
$ sed 's/a/o/g;$!d;s/.$//' plop 
blybl
Ma mienne :
Code :
1
2
3
4
5
$ sed '$ s/.$//;s/a/o/g' plop 
bloblo
blibli
blublu
blybl
PS. Si je n'ai toujours rien compris, merci de me dire où
__________________
$ 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 10
Vieux 19/08/2011, 09h12   #14
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 534
Points : 7 743
Points : 7 743
Citation:
Envoyé par zipe31 Voir le message
Avec ta syntaxe ce n'est pas possible

le "$!d" supprime tout ce qui existe avant la dernière ligne, difficile de traiter quoi que ce soit dans ce cas là, que ce soit avant ou après
bien sur que si tu traites les données machin truc, puis tu vires le caractère anormal généré sur la fin de la dernière ligne action qui ne peut en aucun cas être réalisée avant que la ligne ne soit générée !


Code :
1
2
3
4
traitement1  fichier >> fictraite # la ligne problème est crée là
traitement2 fictraite >> fichierfinal # on traite le  fichier sauf la ligne de fin
sed '$!d;s/.$//' fictraite >> fichierfinal # on corrige la ligne à problème
posttraitements # si besoin
============
arretes là ça fait plusieurs fois que je répète que c'est juste la partie extraordinairement précise du problème pas un programme généraliste pour tous les cas de la planète... évidement que la syntaxe seule nue comme ça ne fera que une ligne forcément !
frp31 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 07h01.


 
 
 
 
Partenaires

Hébergement Web