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]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.