Rechercher : dans
Par :

[ksh] vi, sed et caractères "null" et &

Dernière réponse le 18 nov 2008 à 11:18:37 Pitu, le 23 sep 2003 à 09:00:04 
 Signaler ce message aux modérateurs

Bonjour à toutes et à tous

Des fichiers de données arrivent sur ma machine unix avec des caractères parasites en fin de ligne : ^M (hexa [0D] [0A])
C'est dû au paramétrage des transferts ftp successifs que mes fichiers ont subi pour arriver jusqu'à destination, qui ont fait que le CR-LF est mal transcodé.
Pour remédier à cela, j'ai passé une brillante commande sed qui a pour but de me virer ces caractères supplémentaires :

sed 's/^M$//g' fic1.in > fic1.out

Problème : Dans mes fichiers de départ, j'ai parfois plusieurs caractères hexa [00]. Ils ne sont pas visibles par vi, et le passage de la commande sed me les supprime carrément.
Ma question : comment virer les caractères ^M de fin de ligne sans pour autant supprimer ces caractères "null" ?

D'avance merci.
  (:•Þ   Pitu
Sauvez mon hamac, Bouffez Castor !

Meilleures réponses pour « [ksh] vi, sed et caractères "null" et & » dans :
Petit tuto sur VI/VIM VoirExtraits du tutoriel de VIM =============================================================================== B i e n v e n u e dans le T u t o r i e l de V I M - Version 1.5.fr.2...
Sed - Introduction à SED - Part II VoirSED - The Stream EDitor - Part II Ce document est une introduction à la pratique et à l'utilisation de l'éditeur de flux "SED", qui essaie de couvrir certaines fonctionnalités assez méconnues, pour ne pas dire "quasi inconnues", qui font de "SED"...
Raccourcis clavier Vi(m) VoirL'éditeur de texte Vi (VIM - Vi amélioré) - Raccourcis clavier I. Les modes d'exécution II. Le mode commande 1. Le déplacement Les Caractères Le texte Les lignes 2. Recherche 3. Numérotation de lignes 4. Modification, suppression III....
Télécharger Tweak VI VoirTweak VI Basic est un utilitaire permettant d'optimiser et de personnaliser Windows Vista. Voici un aperçu des fonctionnalités de Tweak VI: Activation de centaines de paramètres cachés de Windows vista Nettoyage de la base de registre ...
Caractères spéciaux HTML VoirCodage des caractères spéciaux Le standard HTML demande de respecter le codage des caractères ASCII 7 bits, c'est-à-dire que les caractères accentués ne sont pas autorisés. Il faut pour cela utiliser un codage particulier. Pour...
LaTeX - Table de caractères VoirSymboles mathématiques Symboles fléchés Lettres grecques Note : certains caractères n'apparaissent pas sous certains navigateurs (notamment certaines versions de Internet Explorer), ils sont remplacés par un carré, la...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...

1

Pitu, le 26 sep 2003 à 08:36:31
  • +1

Je remonte vers la surface ...

  (:•Þ   Pitu

Sauvez mon hamac, Bouffez Castor !

Répondre à Pitu

2

francoispgp, le 26 sep 2003 à 10:51:43

En aiFTéPeutant dans le bon mode !
(ascii/binaire)

tout simplement

si apres il reste des caracteres bidons (c'est pas possible en theorie, mais bon) dans vi et uniquement dans VI ! tu fais
:s/^M//
pour avoir le controlM quand tu tappes cette commande tu tapes en realitee ca :
:s/[CONTROL+V][ENTER]//
control+v etant la touche control+v en meme temps
et enter la touche entree.

Répondre à francoispgp

3

francoispgp, le 26 sep 2003 à 10:54:40

PS: tu peux le faire dans un script VI a condition d'ecrire celui ci avec VI.

#!/usr/bin/ksh
.........
vi foo.bar << EOT
:s/^M//
:x!
EOT
..........
exit 0

Répondre à francoispgp

4

Pitu, le 26 sep 2003 à 13:03:17

Bonjour et merci de ta réponse.
Mais malheureusement, elle ne me convient pas vraiment :
En effet, si j'ai ce pb de caractères ^M, c'est bien à cause du ftp Samba, mais je ne peux traiter la cause à la base. C'est donc pourquoi je cherche à trouver une solution pour les éliminer à postériori.
Reste donc la solution par script ou par shell (cf début du post).
Et ça marche : ça m'enlève bien les ^M. Mais ça, je l'avais déjà fait.
Pb : ça n'enlève pas que ça puisque les commandes de l'éditeur suppriment également les caractères "null" (hexa : [00]).
Et ça, je ne veux pas.
Si quelqu'un a une solution ...
(Batmat, t'es pas là ???)
  (:•Þ   Pitu

Sauvez mon hamac, Bouffez Castor !

Répondre à Pitu

5

francoispgp, le 26 sep 2003 à 13:06:07

Je viens de tester ca ne vire pas le caractere $00.
ni sur linux ni sur tru64Unix.

Répondre à francoispgp

6

Pitu, le 26 sep 2003 à 13:21:14
  • +2

Ben ... sur un AIX, si.
Pour preuve :
Edition du fichier par Ultra-Edit via Samba :

AAAAAAAAAA
BBBBBB..BB
CCCCCCCCCC
DDDDDDDDDD
EEEEE.EEEE

En hexa :
41 41 41 41 41 41 41 41 41 41 0D 0A 42 42 42 42
42 42 00 00 42 42 0D 0A 43 43 43 43 43 43 43 43
43 43 0D 0A 44 44 44 44 44 44 44 44 44 44 0D 0A
45 45 45 45 45 00 45 45 45 45 0D 0A

Maintenant, sous vi :
AAAAAAAAAA^M
BBBBBBBB^M
CCCCCCCCCC^M
DDDDDDDDDD^M
EEEEEEEEE^M
Avec en bas de la page, le msg suivant :
"test00.x" [Incomplete last line] 5 lines, 58 characters (3 nulls)
Tu vois le pb ?
Il me manque 2 car sur la ligne des "B", et un sur celle des "E".
Et si je passe la commande pour enlever les ^M, voila ce que j'obtiens :
AAAAAAAAAA
BBBBBBBB
CCCCCCCCCC
DDDDDDDDDD
EEEEEEEEE

Et en bas :
"test00.x" 5 lines, 52 characters

=> Il me manque bien des caractères.
Et si je reprends mon fichier sous Ultra-Edit, on voit bien qu'il a carrément viré les [00].

  (:•Þ   Pitu
Sauvez mon hamac, Bouffez Castor !

Répondre à Pitu

7

francoispgp, le 26 sep 2003 à 13:58:21

Ben ouai je cromprend pas...
normalement ca marche...
quelle idee de bosser sur IBM aussi...
lol ;-)

Répondre à francoispgp

8

coppernix, le 7 oct 2003 à 09:22:43

Bonjour,
Pour traiter du binaire, il faut utiliser une commande adéquate telle que hexedit.
Sinon, essaie les commandes telles que dos2unix.

Répondre à coppernix

9

Pitu, le 7 oct 2003 à 11:16:14

Merci de ta réponse, Coppernix, mais je suis sur AIX, avec les commandes de bases du Korn-shell ...

  (:•Þ   Pitu

Ni modo, ni même quasi modo

Répondre à Pitu

10

coppernix, le 7 oct 2003 à 12:14:23
Répondre à coppernix

11

sioban, le 18 nov 2008 à 11:18:17

Moi j'ai eu le même problème, j'ai utilisé dos2unix

Pour un fichier
cat fic.txt | dos2unix >newfic.txt

ou pour une variable

result=`echo $result | dos2unix`

Répondre à sioban

12

 sioban, le 18 nov 2008 à 11:18:37

Moi j'ai eu le même problème, j'ai utilisé dos2unix

Pour un fichier
cat fic.txt | dos2unix >newfic.txt

ou pour une variable

result=`echo $result | dos2unix`

Répondre à sioban