127103
Feb 22, 2016, updated at 14:44:36 (UTC)
5253
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 296994
Url: https://administrator.de/contentid/296994
Printed on: April 24, 2024 at 11:04 o'clock
8 Comments
Latest comment
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