[Eisfair_dev] Brauche mal Programmier Hilfe
Helmut Backhaus
helmut.backhaus at gmx.de
Mo Feb 3 22:42:25 CET 2014
Moin Alex,
ich wusste, es kommt zur Grundsatzdiskussion.
Am 03.02.2014 19:27, schrieb Alexander Dahl:
> Moin,
>
> Helmut Backhaus <helmut.backhaus at gmx.de> schrieb:
>> wert=$(more *txt* | grep -c $suche)
>>
>> echo $wert
>> 15
>
> Hast Du mehrere Dateien?
Ja klar, dass war das Anliegen von Andreas.
Suche einen Begriff in vielen log Dateien und sage mir wie oft er vorkommt.
> Wenn *txt* da oben kein Platzhalter ist, dann
> passiert dort globbing in der Shell und more wird mit mehreren
> Dateinamen als Argument aufgerufen. Diese werden zusammengefasst bevor
> sie in die pipe zu grep gelangen.
Und dort wird gezählt...
Richtig?
>
>> Ohne Frage, aber....
>> Das Ergebnis ist ein anderes ;-)
>>
>>> WERT="$(grep -c $SUCHBEGRIFF *log*)"
>>>
>>
>> Auch hier ein Beispiel:
>> suche=Beschwerdeführer
>>
>> wert=$(grep -c $suche *txt*)
>>
>> echo $wert
>> dell1600n-net-scan.pl.txt:0 print_voucher.txt:0
>> ubuntu_boot_optimieren.txt:0 urteil_BOS_homberg-Efze.txt:15
>
> Hier bekommt grep mehrere Dateien und grep wertet die einzeln aus. Daher
> hier auch zunächst der Dateiname und dann die Anzahl pro Datei.
Richtig, und ich erhalte nicht (ohne irgendwelche Klimmzüge mit z.B. cut
in einer Schleife) mein gewünschtes Ergebnis.
>
> Wenn Du alle zusammenzählen willst, ist vielleicht das hier was Du
> willst:
>
> cat *txt* | grep -c $SUCHBEGRIFF
Das ist eigentlich meine "normale" Vorgehensweise, wenn ich so etwas
brauche. More war von Andreas vorgegeben und ich habe es einfach weiter
benutzt.
>
> Also more durch cat ersetzen, also das für diesen Zweck geeignete
> Programm statt einen Pager. Wenn Du dir mit
>
> more *txt* | cat
>
> nämlich mal anschaust, was more da auf stdout schreibt, wirst Du
> feststellen, dass da Zeilen dazugekommen sind, die u.U. Dein Ergebnis
> verfälschen können.
Ok, more ist an dieser Stelle etwas langsamer. So im µs Bereich... ;-)
Aber Fehler sind mir dabei nicht aufgefallen, ich wüsste auch nicht
warum das fehlerhaft werden sollte.
Aber du hast schon recht, "cat" ist hier das ziel führende Programm.
>
> Falls Dir cat statt more missfällt, es gibt gewiss eine elegante Lösung
> mit awk. ;-)
>
Oder für den Masochist sed! ;-)
Schönen Abend noch...
--
Gruß,
Helmut
Mehr Informationen über die Mailingliste Eisfair_dev