127103
22.02.2016, aktualisiert um 15:44:36 Uhr
5356
8
0
Grep Textdatei nach mehreren Strings durchsuchen je String Anzahl der Zeilen ausgeben
Hallo lieber Foristen,
Folgendes konnte ich bereits erfolgreich eruieren.
Grep sucht in der Datei nach "ocsp" und spuckt mir die Anzahl der Zeilen in test_1.log.
Im Endeffekt möchte ich am liebsten dass, zu "suchende Strings" aus einer Datei entnommen werden.
Toll wäre auch wenn ich wüsste wie ich, pro zu suchenden String, eine eigene Datei anlegen könnte. Also die Ergebnisse pro suche in test_${STRING}.log beispielsweise.
Wobei mir nicht ganz klar ist ob xargs quasi alle Argumente aus der txt mit einem mal übergibt...
Grüße
Folgendes konnte ich bereits erfolgreich eruieren.
Grep sucht in der Datei nach "ocsp" und spuckt mir die Anzahl der Zeilen in test_1.log.
grep -c '/.*ocsp.*$' /home/user/januar.log > /home/user/test_1.log
Im Endeffekt möchte ich am liebsten dass, zu "suchende Strings" aus einer Datei entnommen werden.
cat suchstrings.txt | xargs -I {} grep -e '/^.*({}).*$' -c /home/user/januar.log > /home/user/zertifikate/test.log
Toll wäre auch wenn ich wüsste wie ich, pro zu suchenden String, eine eigene Datei anlegen könnte. Also die Ergebnisse pro suche in test_${STRING}.log beispielsweise.
Wobei mir nicht ganz klar ist ob xargs quasi alle Argumente aus der txt mit einem mal übergibt...
Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 296994
Url: https://administrator.de/contentid/296994
Ausgedruckt am: 20.11.2024 um 07:11 Uhr
8 Kommentare
Neuester Kommentar
Hi,
für erstens gibt es die Option -F <strings>.
Zweitens müsstest Du mit einer Schleife gut lösen können
wobei DATEI Deine Strings enthält, einen je Zeile. Enthalten die Strings Leerzeichen etc., wird es etwas komplexer...
cu jth
für erstens gibt es die Option -F <strings>.
Zweitens müsstest Du mit einer Schleife gut lösen können
while read STRING
do
grep -c '/.*$STRING.*$' >resultfor_$STRING_.grep
done <DATEI
wobei DATEI Deine Strings enthält, einen je Zeile. Enthalten die Strings Leerzeichen etc., wird es etwas komplexer...
cu jth
for line in $(cat ./suchstrings.txt) ;do grep -ce "/.*$line" /home/user/januar.log >"./result_${line}.txt" ;done
Kann ich nicht nachvollziehen, geht hier problemlos ...simpelste FOR-Schleife....
Bash Guide for Beginners
Bash Guide for Beginners
Hi,
sorry, ja die Datei zum greppen in der Schleife fehlt und, wenn eine Variable von der Shell ersetzt werden soll, muss sie in Anführungszeichen stehen und nicht in Hochkomma... korrekt wäre
cu jth
sorry, ja die Datei zum greppen in der Schleife fehlt und, wenn eine Variable von der Shell ersetzt werden soll, muss sie in Anführungszeichen stehen und nicht in Hochkomma... korrekt wäre
while read hstr
do
grep -c "^.*$hstr.*$" </home/user/januar.log >resultfor_$hstr_.grep
done <suchstrings.txt
cu jth