[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