[Eisfair_dev] Brauche mal Programmier Hilfe

Alexander Dahl lespocky at web.de
Mo Feb 3 19:27:33 CET 2014


Moin, 

Helmut Backhaus <helmut.backhaus at gmx.de> schrieb:
> wert=$(more *txt* | grep -c $suche)
>
> echo $wert
> 15

Hast Du mehrere Dateien? 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.

> 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.

Wenn Du alle zusammenzählen willst, ist vielleicht das hier was Du
willst:

cat *txt* | grep -c $SUCHBEGRIFF

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.

Falls Dir cat statt more missfällt, es gibt gewiss eine elegante Lösung
mit awk. ;-)

Grüße
Alex

-- 
***** http://blog.antiblau.de/ *****************************
GnuPG-FP: 02C8 A590 7FE5 CA5F 3601  D1D5 8FBA 7744 CC87 10D0


Mehr Informationen über die Mailingliste Eisfair_dev