[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