From langolf@gmx.net Sun Jan 27 20:05:31 2002 From: Roman Langolf To: users-de@lists.opensuse.org Subject: egrep & Co. Date: Sun, 27 Jan 2002 21:06:18 +0100 Message-ID: <20020127200532.9DC7BE653B@ns1.suse.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1356898604088740476==" --===============1356898604088740476== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Hallo alle, ich möchte eine datei nach 'href="*"' durchsuchen und das Ergebnis in eine neue Datei schreiben. egrep 'href="*"' datei.html > neu egrep macht das auch aber er gibt komplette Zeile aus. Wie kann ich denn nun nur das 'href="*"' oder am besten das * ausgeben lassen? Und dazu noch eine Zeichenkette (http://www.irgendwas.de/) vor dem * hinzufügen? Besten Dank! Roman --===============1356898604088740476==-- From rmue@gmx.de Sun Jan 27 22:14:40 2002 From: Ralph =?utf-8?q?M=C3=BCller?= To: users-de@lists.opensuse.org Subject: Re: egrep & Co. Date: Sun, 27 Jan 2002 22:10:26 +0100 Message-ID: <3C546CC2.A5464238@gmx.de> In-Reply-To: <20020127200532.9DC7BE653B@ns1.suse.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1586720066178800327==" --===============1586720066178800327== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Roman Langolf wrote: > egrep macht das auch aber er gibt komplette Zeile aus. Wie kann ich > denn nun nur das 'href="*"' oder am besten das * ausgeben lassen? > Und dazu noch eine Zeichenkette (http://www.irgendwas.de/) vor dem > * hinzufügen? Schaue Dir den Befehl "cut" an. Also ungefähr so (ungetestet): ... temp=$(grep ... | cut ...) echo "http://www.irgendwas.de/) $temp" ... Ralph --===============1586720066178800327==-- From david@dhaller.de Mon Jan 28 14:34:21 2002 From: David Haller To: users-de@lists.opensuse.org Subject: Re: egrep & Co. Date: Mon, 28 Jan 2002 02:45:18 +0100 Message-ID: <20020128024518.C4957@feersum.endjinn.de> In-Reply-To: <3C546CC2.A5464238@gmx.de> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============7545332973698150430==" --===============7545332973698150430== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit On Sun, 27 Jan 2002, Ralph Müller wrote: >Roman Langolf wrote: >> egrep macht das auch aber er gibt komplette Zeile aus. Wie kann ich >> denn nun nur das 'href="*"' oder am besten das * ausgeben lassen? >> Und dazu noch eine Zeichenkette (http://www.irgendwas.de/) vor dem >> * hinzufügen? > >Schaue Dir den Befehl "cut" an. >Also ungefähr so (ungetestet): > ... > temp=$(grep ... | cut ...) > echo "http://www.irgendwas.de/) $temp" > ... Schwachfug. (sorry, das ist nicht boese gemeint, nur der voellig falsche Befehl fuer diesen Zweck ;) Richtig fuer diesen Fall ist: sed -n 's/.*a href="\([^"]*\)".*/\1/pi' < Eingabedatei Allerdings stellt auch das noch gewisse Anforderungen an die Eingabedatei, nicht immer sind URLs korrekt durch "" umschlossen, man sollte also eher nach suchen, z.B. mit: sed -n 's/.*href="*\([^">]*\)[">].*/\1/pi' < Eingabedatei Siehe 'man sed', 'info sed' oder besser noch ein gutes Buch, das sed behandelt ("Linux in a Nutshell" ist gut zum Nachschlagen, aber weniger zum Einstieg ;) Oh, und ganz wichtig: Wenn man mal gelernt hat, wie man sed-Befehle testen kann, ohne dass die Eingabedatei (oder sonst eine) ueberschrieben wird, dann ist es mit am besten, einfach Mal rumzuprobieren, um zu verstehen, was sed da macht... -dnh PS: mit perl geht's latuernich auch, wenn man die Ausgabe weiter- verarbeiten will, ist das evtl. sogar vorzuziehen, ansonsten braucht perl aber zu lange, um zu starten... Hm... Ein: perl -pe 's/.*href="?([^ ">]*?)[">].*/$1/igo;' \ < .netscape/bookmark.html spuckt mir noch ein paar unerwuenschte Sache aus... -- The Universe -- some information to help you live in it. 4 POPULATION: None. --===============7545332973698150430==--