web-dev-qa-db-fra.com

Récupérer les 100 dernières lignes du journal

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

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

S'il vous plaît laissez-moi savoir comment puis-je changer cette commande pour récupérer spécifiquement les dernier 100 lignes.

113
Surabhi

Vous pouvez utiliser la commande tail comme suit:

tail -100 <log file>   > newLogfile

Maintenant, les 100 dernières lignes seront présentes dans newLogfile

EDIT:

Les versions les plus récentes de tail mentionnées par twalberg utilisent la commande:

tail -n 100 <log file>   > newLogfile
223
Steephen

Regardez, le script sed qui affiche 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 beaucoup plus difficile que votre script,

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 à strace report pour tail ./huge-file: https://unix.stackexchange.com/questions/102905/does-tail-read-the-whole-file/102910#10291

10
Sergei Kurenkov

"tail" est la commande pour afficher la dernière partie d'un fichier. L'utilisation des commutateurs disponibles nous permet d'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 numéro | -n numéro] [fichier ...]

Ici

-n numéro: l'emplacement est une ligne numérique.

-f: L'option -f permet à tail de ne pas s'arrêter lorsque la fin du fichier est atteinte, mais d'attendre l'ajout de données supplémentaires à l'entrée. L'option -f est ignorée si l'entrée standard est un canal, mais pas s'il s'agit d'une FIFO.

Récupérer les 100 dernières lignes du journal

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

To get real time last 100 lines
     tail -f -n 100 <file path>
7
Amitesh

Je sais que c'est très vieux, mais pour qui que ce soit, cela peut aider.

less +F my_log_file.log

c'est simplement fondamental, avec moins, vous pouvez faire beaucoup plus de choses puissantes. Une fois que vous commencez à voir les journaux, vous pouvez effectuer une recherche, aller au numéro de ligne, rechercher un modèle, et bien plus encore, plus le fichier est volumineux.

son comme vim pour les journaux [totalement mon avis]

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

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

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

la première ligne prend la longueur (nombre total de lignes) du fichier, puis +1 dans le total des lignes, après quoi nous devons aligner 100 enregistrements.

J'espère que cela t'aidera.

1
Akshay Jangir