test de newline

Le
Archidemon
Autrefois, Linda Fairhead a écrit:

If the file is guarenteed to not have a terminating newline (or if
the addition of an empty line at the bottom of the output is not
going
to make any difference ) just use an 'echo' to add the newline after
a 'cat' command;

{ cat filename; echo ; } | sed 's/old/new/g'

Otherwise you can check if it is newline or not using a 'tail' to
get the last character, and then only if it is not there add one;

{ cat filename
if [ "$( tail -c 1 filename |tr -c '12' x )" = "x" ]
then echo
fi
} | sed 's/old/new/g'

Et je sais que ça a déjà fonctionné sur mon vieux mac. Toutefois si=
je
traite un fichier sans newline sur mon nouveau mac en faisant:

{ cat filename; echo ; }>tmp

Tout ce qui est ajouté est un simple point (A0 en hexadécimal) et non
un newline. Est-ce que ça a arrêté de fonctionné ou j'ai arrêté=
de
comprendre?

Par ailleurs, s'il y a une nouvelle façon d'ajouter un newline à la
fin de la dernière ligne, quelle serait la bonne façon de tester s'il
y en a déjà une?

Merci!
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
blanc
Le #17426321
Archidemon
Et je sais que ça a déjà fonctionné sur mon vieux mac. Toutefois si je
traite un fichier sans newline sur mon nouveau mac en faisant:

{ cat filename; echo ; }>tmp

Tout ce qui est ajouté est un simple point (A0 en hexadécimal) et non
un newline. Est-ce que ça a arrêté de fonctionné ou j'ai arrêté de
comprendre?

Par ailleurs, s'il y a une nouvelle façon d'ajouter un newline à la
fin de la dernière ligne, quelle serait la bonne façon de tester s'il
y en a déjà une?

Merci!



Ter repetita non placent !

Autrement dit répéter trois fois le même message ne plait pas (pas
beaucoup) !

Pour répondre à ta question, sinon, ça marche très bien chez moi.

Maintenant es-tu sûr d'avoir mis un ; après echo ? car si c'est un point
que tu as mis, cela expliquerait que tu le retrouves dans ton fichier
tmp (quoi que...)
Es-tu sûr aussi que c'est A0 en hexa que tu as. Ne serais ce pas plutôt
0A qui est le code ascii du newline en hexa ?
Chez moi, avec la commande :

od -h filename

j'obtiens OA suivi de 00 (lequel doit être juste l'indication de fin de
fichier fournie par la commande od)

--
JiPaul.
/ /--/--//\ Jean-Paul Blanc
|/| L |\ quelquepart en (somewhere in)
/|| = |||\ FRANCE
blanc
Le #17426311
Archidemon
Et je sais que ça a déjà fonctionné sur mon vieux mac. Toutefois si je
traite un fichier sans newline sur mon nouveau mac en faisant:



Maintenant aussi, reste à savoir ce qu'est ton nouveau mac ? et surtout
quel version de système utilises-tu ? car perso je suis sous Tiger. Si
tu es sous Léo, c'est peut-être différent...

--
JiPaul.
/ /--/--//\ Jean-Paul Blanc
|/| L |\ quelquepart en (somewhere in)
/|| = |||\ FRANCE
blanc
Le #17426301
Archidemon
Et je sais que ça a déjà fonctionné sur mon vieux mac. Toutefois si je
traite un fichier sans newline sur mon nouveau mac en faisant:



Maintenant aussi, reste à savoir ce qu'est ton nouveau mac ? et surtout
quelle version de système utilises-tu ? car perso je suis sous Tiger. Si
tu es sous Léo, c'est peut-être différent...

--
JiPaul.
/ /--/--//\ Jean-Paul Blanc
|/| L |\ quelquepart en (somewhere in)
/|| = |||\ FRANCE
Archidemon
Le #17429231
JiPaul a écrit :
Archidemon
Et je sais que ça a déjà fonctionné sur mon vieux mac. Toutefois si je
traite un fichier sans newline sur mon nouveau mac en faisant:

{ cat filename; echo ; }>tmp

Tout ce qui est ajouté est un simple point (A0 en hexadécimal) et non
un newline. Est-ce que ça a arrêté de fonctionné ou j'ai arrêté de
comprendre?

Par ailleurs, s'il y a une nouvelle façon d'ajouter un newline à la
fin de la dernière ligne, quelle serait la bonne façon de tester s'il
y en a déjà une?

Merci!



Ter repetita non placent !

Autrement dit répéter trois fois le même message ne plait pas (pas
beaucoup) !



Je ne sais pas comment ça c'est produit. Désolé!

Pour répondre à ta question, sinon, ça marche très bien chez moi.

Maintenant es-tu sûr d'avoir mis un ; après echo ? car si c'est un point
que tu as mis, cela expliquerait que tu le retrouves dans ton fichier
tmp (quoi que...)
Es-tu sûr aussi que c'est A0 en hexa que tu as. Ne serais ce pas plutôt
0A qui est le code ascii du newline en hexa ?
Chez moi, avec la commande :

od -h filename

j'obtiens OA suivi de 00 (lequel doit être juste l'indication de fin de
fichier fournie par la commande od)



En fin de compte tu as raison!
Publicité
Poster une réponse
Anonyme