38 votes

Lignes de fichier de sortie du dernier au premier dans Bash

Je veux afficher les 10 dernières lignes de mon fichier journal, en commençant par la dernière ligne- comme un lecteur de journal normal. Je pensais que ce serait une variation de la commande de queue, mais je ne trouve ça nulle part.

15voto

drysdam Points 3266

tac fait ce que vous voulez. C'est l'inverse de cat.

tail -10 logfile | tac

8voto

Yarin Points 18186

J'ai fini par utiliser tail -r, ce qui a fonctionné sur mon OSX (tac ne fonctionne pas)

tail -r -n10

3voto

ata Points 996

Vous pouvez le faire avec pure bash :

#!/bin/bash
readarray file
lines=$(( ${#file[@]} - 1 ))
for (( line=$lines, i=${1:-$lines}; (( line >= 0 && i > 0 )); line--, i-- )); do
    echo -ne "${file[$line]}"
done

./tailtac 10 < somefile

./tailtac -10 < somefile

./tailtac 100000 < somefile

./tailtac < somefile

2voto

Il s'agit des méthodes parfaites pour imprimer la sortie dans l'ordre inverse

tail -n 10 <logfile>  | tac

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X