Come trovare l'ultima corrispondenza di una stringa in un mucchio di file


1

Ho un sacco di file, mi piacerebbe trovare l'ultima corrispondenza di una stringa in ciascuno di essi.

grep text *.file mi dà tutte le partite non le ultime.

ls *.file | xargs grep text | tail -n 1 mi dà l'ultima riga dell'ultimo file corrispondente.

Quindi quello che penso di volere è un modo per dire:

ls *.file | (xargs grep text | tail -n 1)

Ma non sono sicuro di come farlo, o se è possibile.

Risposte:


2

Utilizzare tail -n 1in un forciclo. Per esempio:

for name in *.file; do
    grep -H text "$name" | tail -n 1
done

(L' -Hopzione farà grepsempre stampare il nome del file, anche se è stato dato un solo file.)


0

C'è un oneliner su un taccommad, quel file di output dalla fine all'inizio:

find . -name *.log -exec sh -c "tac '{}' | grep -Hm1 text " \;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.