trier un fichier en ligne (perl sort inline)

Le
Cyrille Lefevre
Bonjour,

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

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%nospam@laposte.net.invalid
supprimer "%nospam% et ".invalid" pour me repondre.
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
Marc
Le #23249171
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
?
Damien Wyart
Le #23249471
* Cyrille Lefevre 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
Damien Wyart
Le #23249481
* Cyrille Lefevre 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
Marc Boyer
Le #23250101
Le 31-03-2011, Marc
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
Marc
Le #23250211
Marc Boyer wrote:

Le 31-03-2011, Marc
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)
Marc Boyer
Le #23250431
Le 01-04-2011, Marc
"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
Nicolas George
Le #23251111
Marc Boyer , dans le message
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.
Marc Boyer
Le #23251131
Le 01-04-2011, Nicolas George
Marc Boyer , dans le message
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
Cyrille Lefevre
Le #23251781
Le 01/04/2011 08:02, Damien Wyart a écrit :
* Cyrille Lefevre 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.
Publicité
Poster une réponse
Anonyme