Brauche Rat bzgl grep/pdfgrep
Zitat von Willi am 16. September 2023, 11:43 UhrIch habe ein kleines Shell-Skript geschrieben, welches das löst.
Es wird nach dem ersten Wort gesucht, die Dateinamen, die dieses Wort enthalten in eine Variable geschrieben.
Dann werden die Dateien aus der Variablen nach dem 2. Wort durchsucht und die Dateinamen wieder in eine Variable geschrieben. Das dann auch noch einmal für das 3. Wort.
Ich habe das auf meinem Android-Tablett mit normalen Text-Dateien getestet. Das Skript ist sehr einfach gehalten und so dürfen die Dateinamen keine Leerzeichen enthalten.
#!/data/data/com.termux/files/usr/bin/bash
dateien1=$(grep -il brand *.txt)
#echo $dateien1 | sed 's/ /\n/g'
#echo ""
for datei in $dateien1; do
dateien2=$dateien2" "$(grep -il "unfall" $datei)
done
#echo $dateien2 | sed 's/ /\n/g'
#echo " "
for datei in $dateien2; do
dateien3=$dateien3" "$(grep -il "us-armee" $datei)
done
echo $dateien3 | sed 's/ /\n/g'Viele Grüße Willi
Ich habe ein kleines Shell-Skript geschrieben, welches das löst.
Es wird nach dem ersten Wort gesucht, die Dateinamen, die dieses Wort enthalten in eine Variable geschrieben.
Dann werden die Dateien aus der Variablen nach dem 2. Wort durchsucht und die Dateinamen wieder in eine Variable geschrieben. Das dann auch noch einmal für das 3. Wort.
Ich habe das auf meinem Android-Tablett mit normalen Text-Dateien getestet. Das Skript ist sehr einfach gehalten und so dürfen die Dateinamen keine Leerzeichen enthalten.
#!/data/data/com.termux/files/usr/bin/bash
dateien1=$(grep -il brand *.txt)
#echo $dateien1 | sed 's/ /\n/g'
#echo ""
for datei in $dateien1; do
dateien2=$dateien2" "$(grep -il "unfall" $datei)
done
#echo $dateien2 | sed 's/ /\n/g'
#echo " "
for datei in $dateien2; do
dateien3=$dateien3" "$(grep -il "us-armee" $datei)
done
echo $dateien3 | sed 's/ /\n/g'
Viele Grüße Willi
Zitat von Willi am 17. September 2023, 15:32 UhrMit der Option -d '\n' kann xargs auch mit Leerzeichen im Dateinamen umgehen.
Mit der Option -d '\n' kann xargs auch mit Leerzeichen im Dateinamen umgehen.
Zitat von Rocki am 17. September 2023, 17:17 UhrDanke, @willi Das betrifft also nur Android, und das Terminal Termux muss installiert sein. Kannst du das Skript für Linux auf dem Desktop entsprechend abändern? Und kannst du deine Ergänzung -d '\n' zum anderen Befehl noch ein wenig benutzerfreundlicher machen, damit sie mehr Leser nutzen können. Das wäre sehr nett. Also den ganzen Befehl mit dieser Ergänzung zusammen aufführen. Danke.
Zu Termux haben wir übrigens hier einen Beitrag von @robertgoedl: https://linux-bibel.at/index.php/2023/09/13/termux-vollstaendiges-linux-terminal-fuer-android/
Danke, @willi Das betrifft also nur Android, und das Terminal Termux muss installiert sein. Kannst du das Skript für Linux auf dem Desktop entsprechend abändern? Und kannst du deine Ergänzung -d '\n' zum anderen Befehl noch ein wenig benutzerfreundlicher machen, damit sie mehr Leser nutzen können. Das wäre sehr nett. Also den ganzen Befehl mit dieser Ergänzung zusammen aufführen. Danke.
Zu Termux haben wir übrigens hier einen Beitrag von @robertgoedl: https://linux-bibel.at/index.php/2023/09/13/termux-vollstaendiges-linux-terminal-fuer-android/
Zitat von dau am 18. September 2023, 17:08 UhrAlso das ist wirklich der helle Wahnsinn hier! So viel Hilfsbereitschaft, ich bin ehrlich sehr dankbar!
Das Problem ist inzwischen gelöst, wenn auch auf die primitivst möglich Art: ich habe zwei Fotos von dem Unfall erhalten, und konnte den Zeitrum zudem auf Oktober 1974 oder 1975 eingrenzen - und dann habe ich einfach die betreffenden Zeitungen durchgesehen.
Was jetzt aber nicht heißt, dass ich nicht eine Menge gelernt habe. Das wird in andern Fällen noch oft hilfreich sein, das war sicher nicht die letzte Sache die wir im Archiv suchen müssen.
Ich hoffe nur, dass ich irgendwann auch mal was relevantes beisteuern kann!
Zur Belohnung poste ich mal die Fundstelle. Es gab nur dieses Bild, keinen Bericht, und man kann gut erkennen, dass meine ganzen Suchwörte ins Leere gelaufen sind.
Also das ist wirklich der helle Wahnsinn hier! So viel Hilfsbereitschaft, ich bin ehrlich sehr dankbar!
Das Problem ist inzwischen gelöst, wenn auch auf die primitivst möglich Art: ich habe zwei Fotos von dem Unfall erhalten, und konnte den Zeitrum zudem auf Oktober 1974 oder 1975 eingrenzen - und dann habe ich einfach die betreffenden Zeitungen durchgesehen.
Was jetzt aber nicht heißt, dass ich nicht eine Menge gelernt habe. Das wird in andern Fällen noch oft hilfreich sein, das war sicher nicht die letzte Sache die wir im Archiv suchen müssen.
Ich hoffe nur, dass ich irgendwann auch mal was relevantes beisteuern kann!
Zur Belohnung poste ich mal die Fundstelle. Es gab nur dieses Bild, keinen Bericht, und man kann gut erkennen, dass meine ganzen Suchwörte ins Leere gelaufen sind.
Hochgeladene Dateien:Zitat von Willi am 18. September 2023, 19:08 UhrDas von mir gepostete Skript läuft auch unter Linux. Ich nutze Termux unter Android, weil das im Sessel einfach bequemer ist. Die einzige Anpassung wäre in Zeile 1 notwendig, wenn man das Skript direkt, ohne vorangestelltes sh aufrufen möchte.
#!/usr/bin/grep
Man benötigt dieses Skript aber nicht. Mit dem folgenden Kommando funktioniert es auch:
ls -1 *.txt | xargs -d '\n' grep -i -l "US-Armee" | xargs -d '\n' grep -i -l "Brand" | xargs -d '\n' grep -i -l "Unfall"
Die Option -d '\n' sorgt dafür, dass Dateinamen nicht an Leerzeichen gesplittet werden, sondern der Dateiname erst am Zeilenende endet.
Mit dem Programm pdfgrep anstelle von grep kann das Skript und auch der Einzeiler auf PDF-Dateien angewendet werden.
Das von mir gepostete Skript läuft auch unter Linux. Ich nutze Termux unter Android, weil das im Sessel einfach bequemer ist. Die einzige Anpassung wäre in Zeile 1 notwendig, wenn man das Skript direkt, ohne vorangestelltes sh aufrufen möchte.
#!/usr/bin/grep
Man benötigt dieses Skript aber nicht. Mit dem folgenden Kommando funktioniert es auch:
ls -1 *.txt | xargs -d '\n' grep -i -l "US-Armee" | xargs -d '\n' grep -i -l "Brand" | xargs -d '\n' grep -i -l "Unfall"
Die Option -d '\n' sorgt dafür, dass Dateinamen nicht an Leerzeichen gesplittet werden, sondern der Dateiname erst am Zeilenende endet.
Mit dem Programm pdfgrep anstelle von grep kann das Skript und auch der Einzeiler auf PDF-Dateien angewendet werden.
Zitat von dau am 19. September 2023, 8:54 UhrNach ein wenig googeln habe ich das auch herausgefunden, nur leider ist mein ganzer Suchansatz bei den Dateien, die ich habe, wenig sinnvoll: Jede Datei enthält bis zu 16 Seiten einer Zeitung, d.h. die Fundstellen sind immer so weit verteilt und oft auch so häufig, dass nichts vernünftiges herauskommt.
Ich habe inzwischen auch recall ausprobiert, das ist auf jeden Fall praktisch und intuitiver als die Befehlszeile, hat aber im gegebenen Fall genau das gleiche Problem.
Was sich wirklich interessant anhört ist dieses privatGPT, womöglich schafft das die Suche nach bestimmten Artikeln. Weil das aber nicht ganz so leicht zu installieren ist, brauche ich eine Weile dafür und womöglich wieder Hilfestellung vom Board. Wobei ich es aber ehrlich gesagt unter Win versuchen werde, weil das nun mal auf unserem Vereinsrechner läuft, wo auch die Daten liegen für die es gebraucht wird. Ich bin gespannt und nehme erstmal eine VM zum herumprobieren.
Nach ein wenig googeln habe ich das auch herausgefunden, nur leider ist mein ganzer Suchansatz bei den Dateien, die ich habe, wenig sinnvoll: Jede Datei enthält bis zu 16 Seiten einer Zeitung, d.h. die Fundstellen sind immer so weit verteilt und oft auch so häufig, dass nichts vernünftiges herauskommt.
Ich habe inzwischen auch recall ausprobiert, das ist auf jeden Fall praktisch und intuitiver als die Befehlszeile, hat aber im gegebenen Fall genau das gleiche Problem.
Was sich wirklich interessant anhört ist dieses privatGPT, womöglich schafft das die Suche nach bestimmten Artikeln. Weil das aber nicht ganz so leicht zu installieren ist, brauche ich eine Weile dafür und womöglich wieder Hilfestellung vom Board. Wobei ich es aber ehrlich gesagt unter Win versuchen werde, weil das nun mal auf unserem Vereinsrechner läuft, wo auch die Daten liegen für die es gebraucht wird. Ich bin gespannt und nehme erstmal eine VM zum herumprobieren.
Zitat von Rocki am 20. September 2023, 14:05 UhrJa, PrivateGPT braucht auch einen sehr leistungsstarken Computer, habe ich gelesen, sonst geht alles sehr langsam.
Ja, PrivateGPT braucht auch einen sehr leistungsstarken Computer, habe ich gelesen, sonst geht alles sehr langsam.
Zitat von dau am 13. Oktober 2023, 16:22 UhrSo, um die Sache hier zu einem Ende zu bringen:
Die installation von privatGPT ging natürlich erstmal komplett in die Hose, die VM ist zerschossen. Zudem habe ich inzwischen einiges nachgelesen zu dem Thema und gelernt, dasss es wohl eh nicht zu dem Zweck getaugt hätte, den ich erreichen wollte.
Dazu gibt es zwar mindestens eine Lösung, aber die funktioniert nicht mit der kostenlosen GPT-Version und wohl schon gar nicht lokal. Dafür bin ich auf Pinokio gestoßen, hier wird es erklärt:
https://www.heise.de/news/KI-Tools-mit-zwei-Klicks-installieren-Pinokio-ausprobiert-9314420.html
Installiert habe ich es jedoch nicht, weil es bisher nichts anbietet, das ich meine brauchen zu können. Es scheint einem auf jeden Fall eine Menge gefrickel zu ersparen.
Ansonsten ist das Thema "Suche" für mich erstmal abgeschlossen, ich habe viel über grep usw. dazugelernt, und in vielen Fällen ist das ja vollkommen ausreichend.
Nochmal vielen Dank an alle, die hier ihren Gehirnschalz investiert haben!
So, um die Sache hier zu einem Ende zu bringen:
Die installation von privatGPT ging natürlich erstmal komplett in die Hose, die VM ist zerschossen. Zudem habe ich inzwischen einiges nachgelesen zu dem Thema und gelernt, dasss es wohl eh nicht zu dem Zweck getaugt hätte, den ich erreichen wollte.
Dazu gibt es zwar mindestens eine Lösung, aber die funktioniert nicht mit der kostenlosen GPT-Version und wohl schon gar nicht lokal. Dafür bin ich auf Pinokio gestoßen, hier wird es erklärt:
https://www.heise.de/news/KI-Tools-mit-zwei-Klicks-installieren-Pinokio-ausprobiert-9314420.html
Installiert habe ich es jedoch nicht, weil es bisher nichts anbietet, das ich meine brauchen zu können. Es scheint einem auf jeden Fall eine Menge gefrickel zu ersparen.
Ansonsten ist das Thema "Suche" für mich erstmal abgeschlossen, ich habe viel über grep usw. dazugelernt, und in vielen Fällen ist das ja vollkommen ausreichend.
Nochmal vielen Dank an alle, die hier ihren Gehirnschalz investiert haben!
Zitat von Rocki am 14. Dezember 2023, 23:24 UhrMittlerweile habe ich noch eine andere Lösung gefunden - wenn drei Suchwörter in der gleichen PDF-Datei oder sogar auf der gleichen Seite vorkommen müssen:
- Mit cd ins Verzeichnis wechseln, das die PDF-Dateien und/oder Verzeichnisse mit solchen enthält (es kann auch noch Dateien mit anderen Endungen enthalten, die werden bei der Suche ignoriert)
- pdfgrep -rino -e "US-Armee" -e "Brand" -e "LKW"
- Das ergibt eine Aufzählung in der Form
PDF-Datei mit Pfad : Seitenzahl : Suchwort 1 (oder 2 oder 3)
PDF-Datei mit Pfad : Seitenzahl : Suchwort 2 (oder 1 oder 3)
PDF-Datei mit Pfad : Seitenzahl : Suchwort 3 (oder 1 oder 2) usw.- Gibt es in den Ergebnissen mindestens drei Zeilen, bei denen Datei(pfad) und (wenn die Suchwörter auf der gleichen Seite sein müssen) Seitenzahl übereinstimmen und ist in diesen Zeilen jedes Suchwort mindestens einmal vertreten, ist man am Ziel.
Mittlerweile habe ich noch eine andere Lösung gefunden - wenn drei Suchwörter in der gleichen PDF-Datei oder sogar auf der gleichen Seite vorkommen müssen:
- Mit cd ins Verzeichnis wechseln, das die PDF-Dateien und/oder Verzeichnisse mit solchen enthält (es kann auch noch Dateien mit anderen Endungen enthalten, die werden bei der Suche ignoriert)
- pdfgrep -rino -e "US-Armee" -e "Brand" -e "LKW"
- Das ergibt eine Aufzählung in der Form
PDF-Datei mit Pfad : Seitenzahl : Suchwort 1 (oder 2 oder 3)
PDF-Datei mit Pfad : Seitenzahl : Suchwort 2 (oder 1 oder 3)
PDF-Datei mit Pfad : Seitenzahl : Suchwort 3 (oder 1 oder 2) usw. - Gibt es in den Ergebnissen mindestens drei Zeilen, bei denen Datei(pfad) und (wenn die Suchwörter auf der gleichen Seite sein müssen) Seitenzahl übereinstimmen und ist in diesen Zeilen jedes Suchwort mindestens einmal vertreten, ist man am Ziel.
Zitat von LinuxBiber am 15. Dezember 2023, 11:02 Uhr@Rocki, vielleicht hast du Zeit und Lust, diese Tipps zu grep/pdfgrep zusammen zu fassen für das Thema Software -> Scripte im Forum?
Da entsteht eine Script-Sammlung für den schnellen Zugriff/Überblick, ohne langes Durchklicken und Suchen im Forum.
@Rocki, vielleicht hast du Zeit und Lust, diese Tipps zu grep/pdfgrep zusammen zu fassen für das Thema Software -> Scripte im Forum?
Da entsteht eine Script-Sammlung für den schnellen Zugriff/Überblick, ohne langes Durchklicken und Suchen im Forum.