Récupérer les journaux des 100 dernières lignes

164

J'ai besoin de récupérer les 100 dernières lignes de journaux du fichier journal. J'ai essayé la commande sed

sed -n -e '100,$p' logfilename

Veuillez me faire savoir comment puis-je modifier cette commande pour récupérer spécifiquement les 100 dernières lignes.

Surabhi
la source
Ceci est mentionné dans le manuel: gnu.org/software/sed/manual/html_node/tail.html#tail , comment sed peut émuler tail.
Lars Fischer
1
tail -f -n 100 nom de fichier journal
Amitesh Bharti

Réponses:

302

Vous pouvez utiliser la commande tail comme suit:

tail -100 <log file>   > newLogfile

Les 100 dernières lignes seront maintenant présentes dans newLogfile

ÉDITER:

Des versions plus récentes de tail telles que mentionnées par twalberg utilisent la commande:

tail -n 100 <log file>   > newLogfile
Steephen
la source
17
Notez que certaines versions plus récentes de tailnécessitent la syntaxe tail -n 100 <filename>...
twalberg
14

Regardez, le script sed qui imprime les 100 dernières lignes que vous pouvez trouver dans la documentation de sed ( https://www.gnu.org/software/sed/manual/sed.html#tail ):

$ cat sed.cmd
1! {; H; g; }
1,100 !s/[^\n]*\n//
$p

$ sed -nf sed.cmd logfilename

Pour moi, c'est bien plus difficile que ton script alors

tail -n 100 logfilename

est beaucoup plus simple. Et c'est assez efficace, il ne lira pas tous les fichiers si ce n'est pas nécessaire. Voir ma réponse avec le rapport strace pour tail ./huge-file: /unix/102905/does-tail-read-the-whole-file/102910#102910

Communauté
la source
13

"tail" est une commande pour afficher la dernière partie d'un fichier, l'utilisation des commutateurs disponibles appropriés nous aide à obtenir une sortie plus spécifique. le commutateur le plus utilisé pour moi est -n et -f

SYNOPSIS

queue [-F | -f | -r] [-q] [-b nombre | -c nombre | -n nombre] [fichier ...]

Ici

-n nombre: l'emplacement est composé de lignes numériques.

-f: l'option -f fait que tail ne s'arrête pas lorsque la fin du fichier est atteinte, mais attend plutôt que des données supplémentaires soient ajoutées à l'entrée. L'option -f est ignorée si l'entrée standard est un tube, mais pas s'il s'agit d'un FIFO.

Récupérer les journaux des 100 dernières lignes

To get last static 100 lines  
     tail -n 100 <file path>

To get real time last 100 lines
     tail -f -n 100 <file path>
Amitesh Bharti
la source
3

Je sais que c'est très ancien, mais, pour qui que ce soit, cela aide.

less +F my_log_file.log

c'est juste basique, avec moins, vous pouvez faire des choses beaucoup plus puissantes. une fois que vous commencez à voir les journaux, vous pouvez effectuer une recherche, aller au numéro de ligne, rechercher un modèle, bien plus encore, et c'est plus rapide pour les gros fichiers.

c'est comme vim pour les journaux [totalement mon avis]

documentation originale de less: https://linux.die.net/man/1/less

moins de feuille de triche: https://gist.github.com/glnds/8862214

mdsadiq
la source
1
len=`cat filename | wc -l`
len=$(( $len + 1 ))
l=$(( $len - 99 ))
sed -n "${l},${len}p" filename

la première ligne prend la longueur (total des lignes) du fichier puis +1 dans le total des lignes après cela, nous devons récupérer 100 enregistrements donc, -99 de la longueur totale puis il suffit de mettre les variables dans la commande sed pour récupérer les 100 dernières lignes du fichier

J'espère que cela t'aidera.

axy_1976
la source