
Ich brauche nur den Namen der Zip-Datei. Im ersten Schritt habe ich nach dem Autor gesucht:
egrep -ni -B1 --color "$autor: test_autor" file_search_v1.log > result1.log
was auch immer funktionierte, das Ergebnis war:
zip: /var/www/dir_de/html/dir1/dir2/7890971.zip
Autor: test_autor
zip: /var/www/dir_de/html/dir1/dir2/10567581.zip
Autor: test_autor
Aber wie oben erwähnt, der Ziip-Dateiname. Im zweiten Schritt habe ich versucht, das Ergebnis der ersten Suche noch einmal zu filtern:
egrep -ni -B1 --color "$autor: test_autor" file_search_v1.log | xargs grep -i -o "\/[[:digit:]]]\.zip"
nur nach dem Dateinamen zu suchen, funktioniert dies leider nicht.
Meine Frage. Wie sollte der zweite Grep-Filter „aussehen“, damit ich nur den Zip-Dateinamen erhalte?
Antwort1
grep -B1 "$autor: test_autor" file_search_v1.log | grep -o "[^/]*\.zip$"
Ändern Sie den ersten grep
nach Bedarf. Der zweite grep
filtert die Teile am Ende der Zeile heraus, die Nicht- /
Zeichen gefolgt vom .zip
Suffix enthalten.
Wenn Sie wissen, dass Ihre ZIP-Dateien nur Ziffern enthalten, können Sie sie [^/]
durch ersetzen [[:digit:]]
.
Antwort2
Mit Einzelawk
Ausdruck:
$ author="test_autor"
$ awk -v pat="author: $author" '$0 ~ pat{ sub(/^.*\//, "", zip); print zip }{ zip=$0 }' file
7890971.zip
10567581.zip