grep shell script mit variablem Suchmuster
Hallo, 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) ? Danke C Janssen
Hallo,
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) ?
Danke
C Janssen
Hi, for ((i=1900; $i <= 2000; i=$i+1)) do grep -c $i textdatei; done Das sollte so ziemlich das machen, was du möchtest. mfg Stefan Galinski
Hallo,
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) ?
Danke
C Janssen
Hi,
for ((i=1900; $i <= 2000; i=$i+1)) do grep -c $i textdatei; done
Das sollte so ziemlich das machen, was du möchtest.
mfg
Stefan Galinski
Ach ne vergiss das :=) Auf diese Art und Weise sollte es portabler sein. Das einen sowas immer erst einfällt, wenn man die Mail schon verschickt hat. for i in `seq 1900 2000` do grep -c $i textdatei; done
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
participants (3)
-
Christof Janssen
-
David Haller
-
Stefan Galinski