Je souhaite 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 peux pas trouver cela n’importe où.
GNU (Linux) utilise les éléments suivants :
tail -n 10 | tac
tail -n 10
affiche les 10 dernières lignes du fichier journal et tac
(cat orthographié à l’envers) inverse l’ordre.
BSD (OS X) de tail
utilise l’option -r
:
tail -r -n 10
Pour les deux cas , vous pouvez essayer ce qui suit:
if hash tac 2>/dev/null; then tail -n 10 | tac; else tail -n 10 -r ; fi
NOTE: Le manuel GNU stipule que l’option BSD -r
“ne peut inverser que les fichiers qui sont au maximum aussi volumineux que son tampon, qui est généralement de 32 Ko” et que tac
est plus fiable. Si la taille du tampon est un problème et que vous ne pouvez pas utiliser tac
, vous pouvez envisager d’utiliser la réponse de @ ata qui écrit les fonctionnalités dans bash.
tac
fait ce que tu veux. C’est l’inverse du cat
.
tail -10 logfile | tac
J’ai fini par utiliser tail -r
, qui fonctionnait sur mon OSX (pas de tac
)
tail -r -n10
Ce sont les méthodes parfaites pour imprimer les résultats dans l’ordre inverse
tail -n 10 | tac
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
./tailtac -10
./tailtac 100000
./tailtac