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 13/02/2008, 17h19   #1
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 40
Points : 33
Points : 33
Par défaut Unix restriction sur sed

Bonjour,
Je traite un fichier de type csv (séparateur ; ) dans lequel je souhaite éliminer des caractères blanc (plusieurs milliers)
pour ce faire j'utilise la commande
Code :
1
2
sed -e 's/; */;/g' fic_origin > fic_dest
Pour remplacer (un ; et plusieurs blancs) par (un point virgule unique).
Cela fonctionne bien sur les machines de dev et de test mais, vous l'avez deviné , pas sur la machine de prod.

Est-ce que quelqu'un connaitrait une restriction à l'utilisation de sed (taille des lignes par ex) ?
Vincent_D est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 01h40   #2
Membre expérimenté
 
Avatar de iblis
 
Inscription : janvier 2007
Messages : 510
Détails du profil
Informations personnelles :
Âge : 45

Informations forums :
Inscription : janvier 2007
Messages : 510
Points : 510
Points : 510
Envoyer un message via Yahoo à iblis
Tout dépend de la version de sed. Tu peux avoir intérêt à (re-)compiler sed.

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
6.6. Known limitations among sed versions

   Limits on distributed versions, although source code for most
   versions of free sed allows for modification and recompilation.
   The term "no limit" when used below means there is no "fixed"
   limit. Limits are actually determined by one's hardware, memory,
   operating system, and which C library is used to compile sed.

6.6.1. Maximum line length

      GNU sed 3.02: no limit
      GNU sed 2.05: no limit
      sedmod 1.0:   4096 bytes
      HHsed:        4000 bytes

6.6.2. Maximum size for all buffers (pattern space + hold space)

      GNU sed 3.02: no limit
      GNU sed 2.05: no limit
      sedmod 1.0:   4096 bytes
      HHsed:        4000 bytes

6.6.3. Maximum number of files that can be read with read command

      GNU sed 3.02: no limit
      GNU sed 2.05: total no. of r and w commands may not exceed 32
      sedmod 1.0:   total no. of r and w commands may not exceed 20

6.6.4. Maximum number of files that can be written with 'w' command

      GNU sed 3.02: no limit (but typical Unix is 253)
      GNU sed 2.05: total no. of r and w commands may not exceed 32
      sedmod 1.0:   10
      HHsed:        10

6.6.5. Limits on length of label names

      BSD sed:      8 characters
      GNU sed 3.02: no limit
      GNU sed 2.05: no limit
      HHsed:        no limit

6.6.6. Limits on length of write-file names

      BSD sed:      40 characters
      GNU sed 3.02: no limit
      GNU sed 2.05: no limit
      HHsed:        no limit

6.6.7. Limits on branch/jump commands

      HHsed:        50

   As a practical consequence, this means that HHsed will not read
   more than 50 lines into the pattern space via an N command, even if
   the pattern space is only a few hundred bytes in size. HHsed exits
   with an error message, "infinite branch loop at line {nn}".
Source : http://www.faqs.org/faqs/editor-faq/sed/
iblis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 01h44   #3
Membre expérimenté
 
Avatar de iblis
 
Inscription : janvier 2007
Messages : 510
Détails du profil
Informations personnelles :
Âge : 45

Informations forums :
Inscription : janvier 2007
Messages : 510
Points : 510
Points : 510
Envoyer un message via Yahoo à iblis
Pour contourner le problème (si tu as perl d'installé), tente un :
Code :
perl -lpe 's/; */;/g' fic_origin
iblis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 12h09   #4
Nouveau Membre du Club
 
Inscription : juillet 2006
Messages : 40
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 40
Points : 33
Points : 33
Par défaut Ca marche

La solution Perl résoud mon problème. Merci beaucoup.
Vincent_D 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 19h05.


 
 
 
 
Partenaires

Hébergement Web