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

trier un fichier en ligne (perl sort inline)

9 réponses
Avatar
Cyrille Lefevre
Bonjour,

est-il possible de faire qqc comme :

perl -e 'print sort <STDIN>' file

avec l'option -i ?

l'id=E9e est de trier le fichier en ligne...

Cordialement,

Cyrille Lefevre.
--=20
mailto:Cyrille.Lefevre-news%nospam@laposte.net.invalid
supprimer "%nospam% et ".invalid" pour me repondre.

9 réponses

Avatar
Marc
Cyrille Lefevre wrote:

est-il possible de faire qqc comme :

perl -e 'print sort <STDIN>' file

avec l'option -i ?

l'idée est de trier le fichier en ligne...



"en ligne" = "en place" ? Ou avec une seule ligne de commande ?
Pourquoi pas :
sort -o file file
?
Avatar
Damien Wyart
* Cyrille Lefevre <cyrille.lefevre-news%
in fr.comp.os.unix:

est-il possible de faire qqc comme :

perl -e 'print sort <STDIN>' file

avec l'option -i ?



Voici deux propositions :

perl -lp0 -i -e '$_ = join "n"=> sort split /n/' thefile

perl -aF"n" -lp0 -i -e '$_=join$,' thefile

--
DW
Avatar
Damien Wyart
* Cyrille Lefevre <cyrille.lefevre-news%
in fr.comp.os.unix:
est-il possible de faire qqc comme :

perl -e 'print sort <STDIN>' file

avec l'option -i ?



Voici deux propositions :

perl -lp0 -i -e '$_ = join "n" => sort split /n/' thefile

perl -aF"n" -lp0 -i -e '$_=join$,' thefile

--
DW
Avatar
Marc Boyer
Le 31-03-2011, Marc a écrit :
l'idée est de trier le fichier en ligne...



"en ligne" = "en place" ? Ou avec une seule ligne de commande ?
Pourquoi pas :
sort -o file file



Parce que ça ne marchera que sur les petits fichiers, ceux
ou les E/S bufferisée font qu'on lira tout avant de tout écrire ?

Comme d'habitude, c'est facile à faire de façon naive:
sort file -o /tmp/file ; mv /tmp/file file
et bien plus lourd de façon robuste (mktemp, test de succès)

Marc Boyer
--
En prenant aux 10% des francais les plus riches 12% de leurs revenus,
on pourrait doubler les revenus des 10% les plus pauvres.
http://www.inegalites.fr/spip.php?article1&id_mot0
Avatar
Marc
Marc Boyer wrote:

Le 31-03-2011, Marc a écrit :
l'idée est de trier le fichier en ligne...



"en ligne" = "en place" ? Ou avec une seule ligne de commande ?
Pourquoi pas :
sort -o file file



Parce que ça ne marchera que sur les petits fichiers, ceux
ou les E/S bufferisée font qu'on lira tout avant de tout écrire ?



Posix garantit explicitement que ça marche...
(contrairement à sort file > file)
Avatar
Marc Boyer
Le 01-04-2011, Marc a écrit :
"en ligne" = "en place" ? Ou avec une seule ligne de commande ?
Pourquoi pas :
sort -o file file



Parce que ça ne marchera que sur les petits fichiers, ceux
ou les E/S bufferisée font qu'on lira tout avant de tout écrire ?



Posix garantit explicitement que ça marche...
(contrairement à sort file > file)



Bonne nouvelle.
Et en plus, peut-être même est-ce respecté par les outils ;-)

Marc Boyer
--
En prenant aux 10% des francais les plus riches 12% de leurs revenus,
on pourrait doubler les revenus des 10% les plus pauvres.
http://www.inegalites.fr/spip.php?article1&id_mot0
Avatar
Nicolas George
Marc Boyer , dans le message <in4atj$46m$, a écrit :
Et en plus, peut-être même est-ce respecté par les outils ;-)



Si tu m'expliques par mail privé comment écrire la première ligne du
résultat d'un tri avant d'avoir lu la dernière ligne de l'entrée, je
t'envoie un joli cadeau en échange.
Avatar
Marc Boyer
Le 01-04-2011, Nicolas George <nicolas$ a écrit :
Marc Boyer , dans le message <in4atj$46m$, a écrit :
Et en plus, peut-être même est-ce respecté par les outils ;-)



Si tu m'expliques par mail privé comment écrire la première ligne du
résultat d'un tri avant d'avoir lu la dernière ligne de l'entrée, je
t'envoie un joli cadeau en échange.



OK, j'ai dit ma bétise du vendredi, je peux partir en WE ;-)

Marc Boyer
--
En prenant aux 10% des francais les plus riches 12% de leurs revenus,
on pourrait doubler les revenus des 10% les plus pauvres.
http://www.inegalites.fr/spip.php?article1&id_mot0
Avatar
Cyrille Lefevre
Le 01/04/2011 08:02, Damien Wyart a écrit :
* Cyrille Lefevre<cyrille.lefevre-news%
in fr.comp.os.unix:
est-il possible de faire qqc comme :



perl -e 'print sort<STDIN>' file



avec l'option -i ?



Voici deux propositions :

perl -lp0 -i -e '$_ = join "n" => sort split /n/' thefile

perl -aF"n" -lp0 -i -e '$_=join$,' thefile



Bonjour,

je teste dés demain, c'est Stéphane C. qui va faire la geule, grillé au
poteau...

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.