Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

test de newline

4 réponses
Avatar
Archidemon
Autrefois, Linda Fairhead a =E9crit:

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 )" =3D "x" ]
then echo
fi
} | sed 's/old/new/g'

Et je sais que =E7a a d=E9j=E0 fonctionn=E9 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=E9 est un simple point (A0 en hexad=E9cimal) et non
un newline. Est-ce que =E7a a arr=EAt=E9 de fonctionn=E9 ou j'ai arr=EAt=E9=
de
comprendre?

Par ailleurs, s'il y a une nouvelle fa=E7on d'ajouter un newline =E0 la
fin de la derni=E8re ligne, quelle serait la bonne fa=E7on de tester s'il
y en a d=E9j=E0 une?

Merci!

4 réponses

Avatar
blanc
Archidemon wrote:

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
Avatar
blanc
Archidemon wrote:

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
Avatar
blanc
Archidemon wrote:

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
Avatar
Archidemon
JiPaul a écrit :
Archidemon wrote:

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!