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 11/02/2010, 14h36   #1
Invité de passage
 
Inscription : juillet 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5
Points : 1
Points : 1
Par défaut [Unix] supprimer le dernier saut de ligne dans un fichier

Bonjour,

j'ai balayé tout le Net, je n'ai pas trouvé réponses à mon cas.

Voici mon problème :
j'ai en sortie d'un programme Cobol : un fichier en line sequential qui se termine par un saut de ligne (line feed).
Et ce saut de ligne "indésirable" me pose problème pour la suite du traitement.

AAAAAAAA
BBBBBBBBB
CCCCCCCC
\n (0a00)

je cherche une commande pour supprimer ce "\n" en fin de fichier de sorte à ce que mon fichier se termine par la ligne CCCCCCC
et pas par une nouvelle ligne.

Merci.
digital est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2010, 14h47   #2
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 912
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 912
Points : 1 263
Points : 1 263
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2010, 15h05   #3
Invité de passage
 
Inscription : juillet 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5
Points : 1
Points : 1
J'ai essayé la commande et la ligne CCCCCC a été supprimé en laissant toujours ce saut de ligne.

Résultat sed '$d' file > file1 :

AAAAAAAA
BBBBBBBBB
\n
digital est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2010, 12h26   #4
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 912
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 912
Points : 1 263
Points : 1 263
??
Quel Unix utilises-tu ?

Peux-tu envoyer le contenu complet de ton fichier source:
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2010, 18h20   #5
Invité de passage
 
Inscription : juillet 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5
Points : 1
Points : 1
version : AIX fld001 3 4 00562A7A4C00
fld001:base de dev

voici le contenu du fichier (j'ai retouché uniquement les valeurs):
Comment dire à Unix que c'est le dernier "\n" de la dernière ligne qu'il faut supprimer et pas les autres.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
0   3   0   8                                   1   1   6   5 
5   7                               1   2   0   1   0   A   Z 
E   R   T   Y       A   B   C   D   E   R   F                 
                        0   0   0   0   3   6   1             
                                                              
E                       0   0   1   2   3   4   5   6   7   8 
9   1   0   1   1   7                                         
                                                              
                                                              
                    3   0   0   0   4  \n   0   6   0   8     
                            1   1   6   1   5   7   F   L   1 
2   3   4   5   6   6   6           T   O   T   O   I   G   E 
R                                                   M   A   R 
C                                                             
                                                              
    0   1   2   3   4   5   6   7   8   9   8   7   6   5   4 
6   0   0   0   0   0   0   0   0   0   0   0   0   3   3   0 
0   *   F   L   1   2   3   4   5   6   6   6           9   1 
9   4   9                                                     
2   0   0   4   1  \n   0   6   0   8                         
        1   1   6   1   5   7   F   L   1   2   3   4   5   6 
2   6           D   A   D   A   D   A                         
                                G   A   E   L                 
                                                              
                                                1   2   3   4 
5   6   7   8   9   8   7   6   5   4   3   0   0   0   0   0 
0   0   0   0   0   0   0   0   1   6   0   0   *   F   L   1 
2   3   4   5   6   2   6           9   1   9   4   9         
                                            1   5   5   8   9 
n   0   8   0   8                                   1   1   6 
1   5   7                                                     
                                                              
                                                              
                            0   0   0   0   0   0   0   0   0 
1   7   8   5   4   0   2  \n
Et bizarement, je ne sais pas si c'est lié : mais mes enregistrements sont sur 154 caractères alors que dans mon programme cobol j'ai indiqué 160 caractères. Les 6 derniers étant normalement 6 espaces. J'ai l'impression que ma version unix tronque la ligne : [retour chariot + saut à la ligne] lorsqu'il voit un space à la fin d'un enregistrement.
digital est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2010, 22h51   #6
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 912
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 912
Points : 1 263
Points : 1 263
Ce que tu affiche ne ressemble pas a la sortie de la commande "od" sur un Unix standard. Il semble de toute façon que tu ne souhaites pas effacer la dernière ligne comme je l'avais compris dans ton premier post mais que tu veux simplement supprimer le dernier caractère du fichier.

Ceci devrait marcher, (sauf exotisme d'AIX)
Code :
dd if=file of=file1 bs=$(expr $(/bin/ls -l file | awk '{print $5}') - 1) count=1
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2010, 10h13   #7
Invité de passage
 
Inscription : juillet 2008
Messages : 5
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5
Points : 1
Points : 1

Ca a fonctionné! Comment te dire...tu m'enlève une épine, non un clou du pied. Merci beaucoup.
digital 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 +1. Il est actuellement 01h37.


 
 
 
 
Partenaires

Hébergement Web