J'ai actuellement un problème avec une commande grep.
J'ai trouvé le moyen d'afficher uniquement la dernière ligne d'une recherche grep:
grep PATERN FILE_NAME | tail -1
Je trouve également le moyen de faire une recherche grep dans plusieurs fichiers sélectionnés:
find . -name "FILE_NAME" | xargs -I name grep PATERN name
Maintenant, je voudrais seulement obtenir la dernière ligne du résultat de grep pour chaque fichier unique ..__J'ai essayé ceci:
find . -name "FILE_NAME" | xargs -I name grep PATERN name | tail -1
Cela ne me renvoie que la dernière valeur du dernier fichier où je voudrais avoir le dernier modèle correspondant pour chaque fichier.
for f in $(find . -name "FILE_NAME"); do grep PATERN $f | tail -1; done
Que diriez-vous de ce bon monsieur
find . -name "FILE_NAME" -print0 | while read -d '' aa
do
grep PATTERN "$aa" | tail -1
done
Vous pouvez commencer avec le paramètre -B (before) de grep. Par exemple pour obtenir 5 lignes avant le match:
duli@i5 /etc/php5/Apache2 $ grep -i -B5 timezone php.ini
[CLI Server]
; Whether the CLI web server uses ANSI color coding in its terminal output.
cli_server.color = On
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone =
vous pouvez aussi utiliser find pour exécuter des commandes:
find . -name "<file-name-to-find>" -exec grep "<pattern-to-match>" "{}" ";" | tail -1
"{}" est le nom du fichier, faites attention à la globalisation et à la suppression de Shell lors de l'écriture de la commande