Re: grep shell script mit variablem Suchmuster
David Haller <[email protected]>
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
Hallo,
Am Fri, 24 Jun 2005, Christof Janssen schrieb:
>ich möchte in einem text nacheinander verschiednen Jahreszahlen 1900,
>1901 etc suchen und die zahl der EintrÀge bestimmen.
>FÃŒr ein bestimmtes Muster (zB 1900) macht
>
> grep -c 1900 Text
>
>genau was ich möchte. Wie kann ich eine shellvariable, zB i = 1900,
>1901, ... 2000 in das Suchmuster fÃŒr grep konvertieren, damit ich
>die Suche automatisieren kann ? oder gibt es bessere Mittel und Wege
>(möglichst auf shell basis) ?
perl -we '
while( defined( $_ = <> ) ) {
s/(19\d{2}|2000)/$m{$1}++/eg;
}
END{ foreach(sort keys %m) { print "$_: $m{$_}\n"; } }' DATEI
Das hat den Vorteil, dass die Datei nur einmal gelesen wird und somit
die langsame Startzeit gegenueber for i in ...; do grep -c "$i" DATEI
wohl mehr als wett macht. Ausserdem liest das auch von STDIN wenn
keine DATEI angegeben wird.
Das Muster legst du bequem ueber die Regexp zwischen den ersten beiden
// von s///eg fest. Siehe 'perldoc perlre'.
-dnh
--
Human beings were created by water to transport it uphill.
-- BSD fortune file
--
Um die Liste abzubestellen, schicken Sie eine Mail an:
[email protected]
Um eine Liste aller verfÃŒgbaren Kommandos zu bekommen, schicken
Sie eine Mail an: [email protected]