grep -v funktioniert nicht wie gewünscht

Hi, ich möchte zwei Ordner sowie deren Unterordner nach Dateien durchsuchen, die die Zeichenfolge 'perl' beinhalten. Anschließend möchte ich alle Zeilen rausfiltern, in denen '#!/usr/bin/perl' steht. das interessiert mich nicht. Wieso funktioniert das nicht wie geplant ? pc52842:~ # grep -iIr 'perl' /srv/www/cgi-bin/mausdb/* /srv/www/htdocs/mausdb/* |grep -v '^#' /srv/www/cgi-bin/mausdb/change_mice2mouselines.pl:#!/usr/bin/perl -w /srv/www/cgi-bin/mausdb/change_mouselines.pl:#!/usr/bin/perl -w /srv/www/cgi-bin/mausdb/fill_cage_use_data.pl:#!/usr/bin/perl /srv/www/cgi-bin/mausdb/fill_mice_days_in_projects.pl:#!/usr/bin/perl /srv/www/cgi-bin/mausdb/fill_mice_days_in_projects_cst.pl:#!/usr/bin/perl /srv/www/cgi-bin/mausdb/fill_mice_days_in_projects_kth.pl:#!/usr/bin/perl In den Skripten ist auch keine Leerzeichen vor der #. Diese Zeilen dürften mir doch gar nicht angezeigt werden !?! Es scheint als ob das 2. grep überhaupt keinen Einfluß hat: pc52842:~ # grep -iIr 'perl' /srv/www/cgi-bin/mausdb/* /srv/www/htdocs/mausdb/* |grep -v '^#'|wc -l 49 pc52842:~ # grep -iIr 'perl' /srv/www/cgi-bin/mausdb/* /srv/www/htdocs/mausdb/* |wc -l 49 Wenn ich nur den ersten Ordner durchsuche gleiches Problem. Any ideas ? Danke. Bernd Ega -- Bernd Lentes Systemadministration institute of developmental genetics Gebäude 35.34 - Raum 208 HelmholtzZentrum München bernd.lentes@helmholtz-muenchen.de phone: +49 (0)89 3187 1241 fax: +49 (0)89 3187 2294 Erst wenn man sich auf etwas festlegt kann man Unrecht haben Scott Adams Helmholtz Zentrum Muenchen Deutsches Forschungszentrum fuer Gesundheit und Umwelt (GmbH) Ingolstaedter Landstr. 1 85764 Neuherberg www.helmholtz-muenchen.de Aufsichtsratsvorsitzende: MinDir'in Baerbel Brumme-Bothe Geschaeftsfuehrer: Prof. Dr. Guenther Wess, Heinrich Bassler, Dr. Alfons Enhsen Registergericht: Amtsgericht Muenchen HRB 6466 USt-IdNr: DE 129521671 -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org

Hallo Bernd, Am 28.04.2017 um 15:51 schrieb Lentes, Bernd:
Hi,
ich möchte zwei Ordner sowie deren Unterordner nach Dateien durchsuchen, die die Zeichenfolge 'perl' beinhalten. Anschließend möchte ich alle Zeilen rausfiltern, in denen '#!/usr/bin/perl' steht. das interessiert mich nicht. Wieso funktioniert das nicht wie geplant ?
pc52842:~ # grep -iIr 'perl' /srv/www/cgi-bin/mausdb/* /srv/www/htdocs/mausdb/* |grep -v '^#'
/srv/www/cgi-bin/mausdb/change_mice2mouselines.pl:#!/usr/bin/perl -w /srv/www/cgi-bin/mausdb/change_mouselines.pl:#!/usr/bin/perl -w /srv/www/cgi-bin/mausdb/fill_cage_use_data.pl:#!/usr/bin/perl /srv/www/cgi-bin/mausdb/fill_mice_days_in_projects.pl:#!/usr/bin/perl /srv/www/cgi-bin/mausdb/fill_mice_days_in_projects_cst.pl:#!/usr/bin/perl /srv/www/cgi-bin/mausdb/fill_mice_days_in_projects_kth.pl:#!/usr/bin/perl
das funktioniert nicht "wie geplant", aber wie beauftragt. :-). Dein erster grep-Befehl liefert eine Zeile, an deren Anfang "/srv/www/...." steht. Und Du willst nun die Zeilen unterdrücken (grep -v), die am Anfang einen Gartenzaun haben (grep -v ^#). Da die Zeilen, wie erwähnt, mit /srv anfangen, wird auch keine unterdrückt. Ein ... | grep -v \:# würde an _diesen_ Stellen besser helfen. Ist nur doof, wenn das an einer falschen Stelle noch vorkäme. Vielleicht wäre grep -iIr... | cut -f2- -d\: | grep -v ^# besser. Gruß Jan -- _________________________________________________________________ Jan Handwerker http://www.imk-tro.kit.edu/jan.handwerker.php
participants (2)
-
Handwerker, Jan (IMK)
-
Lentes, Bernd