my $nb = shift @ARGV or die "Utilisation : 0ドル <nombre de lignes>\n";
# On ouvre un pipe depuis la commande top -b en entrée open TOP, "top -b|" or die "Impossible de lancer la commande top -b\n"; # Deux affichages consécutifs de top -b sont séparées par deux lignes vides
# Donc en définissant le séparateur d'enregistrements ainsi : $/ = "\n\n\n"; # on obtiendra une sortie complète à chaque accès au file handle. while (<TOP>) { # À ce stade-là, on sépare l'enregistrement courant en lignes my @ligne = split /\n/; # et on affiche les $nb premières lignes (ou une ligne vide pour les lignes
# éventuellement non définies) en remettant une fin de ligne. print map({($_ || '')."\n"} @ligne[0 .. $nb - 1]);
}
close TOP;
Ou en uniligne : top -b | perl -ne 'BEGIN { $/="\n\n\n" } print map({($_ || "")."\n"} (split /\n/)[0..39])' | xrootconsole
où il faut remplacer 39 par le nombre de lignes - 1.
Toujours pas tenté par Perl ?
Cela dit, on doit pouvoir faire à peu près aussi court en Python ou en Ruby...
« Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone
# Une version Perl
Posté par Arthur Accroc . En réponse au message [X-Window] top + xrootconsole. Évalué à 2.
#!/usr/bin/perl -w
use strict;
my $nb = shift @ARGV or die "Utilisation : 0ドル <nombre de lignes>\n";
# On ouvre un pipe depuis la commande top -b en entrée
open TOP, "top -b|" or die "Impossible de lancer la commande top -b\n";
# Deux affichages consécutifs de top -b sont séparées par deux lignes vides
# Donc en définissant le séparateur d'enregistrements ainsi :
$/ = "\n\n\n";
# on obtiendra une sortie complète à chaque accès au file handle.
while (<TOP>) {
# À ce stade-là, on sépare l'enregistrement courant en lignes
my @ligne = split /\n/;
# et on affiche les $nb premières lignes (ou une ligne vide pour les lignes
# éventuellement non définies) en remettant une fin de ligne.
print map({($_ || '')."\n"} @ligne[0 .. $nb - 1]);
}
close TOP;
Ou en uniligne :
top -b | perl -ne 'BEGIN { $/="\n\n\n" } print map({($_ || "")."\n"} (split /\n/)[0..39])' | xrootconsole
où il faut remplacer 39 par le nombre de lignes - 1.
Toujours pas tenté par Perl ?
Cela dit, on doit pouvoir faire à peu près aussi court en Python ou en Ruby...
« Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone