Shellbefehl grep soll nur ersten Treffer ausgeben
Hallo, mal ne Frage, Shell ist die Bash 3 aus openSUSE 10.3. Ich möchte, dass grep den jeweils ersten Treffer ausgibt und keine weiteren, nur wie... Bsp.: die Datei FOO enthält die Werte foo1 foo2 und foo3 ein grep FOO ergibt im Ergebnis nun foo1 foo2 foo3 Ich möchte, dass grep aber nur den ersten Treffer ausgibt, also foo1. Wenn ich die manpage richtig lese, gitb es da keinen eingebauten Schalter, der das könnte, oder? danke Gruß Malte --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
On Sonntag, 13. Januar 2008, Malte Gell wrote:
Hallo,
mal ne Frage, Shell ist die Bash 3 aus openSUSE 10.3. Ich möchte, dass grep den jeweils ersten Treffer ausgibt und keine weiteren, nur wie...
Bsp.: die Datei FOO enthält die Werte foo1 foo2 und foo3
ein grep FOO ergibt im Ergebnis nun foo1 foo2 foo3
Ich möchte, dass grep aber nur den ersten Treffer ausgibt, also foo1.
Oh je... grep foo FOO | head -1 ich glaube kürzer geht es nicht --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
On Sun, 2008-01-13 at 05:57 +0100, Malte Gell wrote:
On Sonntag, 13. Januar 2008, Malte Gell wrote:
Hallo,
mal ne Frage, Shell ist die Bash 3 aus openSUSE 10.3. Ich möchte, dass grep den jeweils ersten Treffer ausgibt und keine weiteren, nur wie...
Bsp.: die Datei FOO enthält die Werte foo1 foo2 und foo3
ein grep FOO ergibt im Ergebnis nun foo1 foo2 foo3
Ich möchte, dass grep aber nur den ersten Treffer ausgibt, also foo1.
Oh je...
grep foo FOO | head -1 ich glaube kürzer geht es nicht Doch ;)
grep -m 1 foo FOO Allerdings liefert Dir beides nicht das erste "foo", sondern nur die erste Zeile, die "foo" enthält. Macht einen erheblichen Unterschied, wenn FOO Zeilen enthält, in denen foo mehrfach vorkommt. Ralf --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
On Sonntag, 13. Januar 2008, Ralf Corsepius wrote:
On Sun, 2008-01-13 at 05:57 +0100, Malte Gell wrote:
grep foo FOO | head -1 ich glaube kürzer geht es nicht
Doch ;)
grep -m 1 foo FOO
Blöde (=alte) deutsche manpage, da wurde der Schalter -m gar nicht erwähnt...
Allerdings liefert Dir beides nicht das erste "foo", sondern nur die erste Zeile, die "foo" enthält.
Macht einen erheblichen Unterschied, wenn FOO Zeilen enthält, in denen foo mehrfach vorkommt.
Läuft das nicht auf dasselbe hinaus? Grep liefert ja doch immer den ersten Treffer, d.h. der erste Treffer ist ja dann logischwerweise auch die erste "Trefferzeile"? Malte --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Hello, On Sun, 13 Jan 2008, Malte Gell wrote:
On Sonntag, 13. Januar 2008, Ralf Corsepius wrote:
On Sun, 2008-01-13 at 05:57 +0100, Malte Gell wrote:
grep foo FOO | head -1 ich glaube kürzer geht es nicht
Doch ;)
grep -m 1 foo FOO
Blöde (=alte) deutsche manpage, da wurde der Schalter -m gar nicht erwähnt...
$ grep -m 1 foo FOO grep: invalid option -- m $ grep --version grep (GNU grep) 2.2 Nicht GNU-grep Varianten können das vermutlich auch nicht. Der Standard[1] kennt die Option jedenfalls nicht. Eine portable Lösung (außer mit 'head') ist auch mit sed möglich: sed -n '/foo/{p;q;}' HTH, -dnh [1] http://www.opengroup.org/onlinepubs/7990989775/xcu/grep.html -- Es gibt ein Sprichwort: "Wer schön sein will, muß leiden". Entsprechende Frauen ziehen den Umkehrschluß: "Wer leidet, ist schön" und kleiden sich entsprechend. -- Roger Schwentker --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
* David Haller
[1] http://www.opengroup.org/onlinepubs/7990989775/xcu/grep.html
Oder einfach "man 1p grep" (unter SUSE). Bernhard --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
On Sonntag, 13. Januar 2008, David Haller wrote:
Blöde (=alte) deutsche manpage, da wurde der Schalter -m gar nicht erwähnt...
$ grep -m 1 foo FOO grep: invalid option -- m $ grep --version grep (GNU grep) 2.2
GNU grep 2.5.2 aus openSUSE 10.3. Benutzt du noch eine "ältere" Distribution oder ein anderes Unixoid mit älterem GNU grep?
Eine portable Lösung (außer mit 'head') ist auch mit sed möglich:
sed -n '/foo/{p;q;}'
Danke für den Tip. Aber da das eh nur für den Hausgebrauch ist ist Portabilität nicht relevant. Ach, kann man nicht einfach GNU / Bash als Referenz benutzen, wenn es eh mehr kann... ;-) Malte --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
Hello, On Sun, 13 Jan 2008, Malte Gell wrote:
On Sonntag, 13. Januar 2008, David Haller wrote:
Blöde (=alte) deutsche manpage, da wurde der Schalter -m gar nicht erwähnt...
$ grep -m 1 foo FOO grep: invalid option -- m $ grep --version grep (GNU grep) 2.2
GNU grep 2.5.2 aus openSUSE 10.3. Benutzt du noch eine "ältere" Distribution oder ein anderes Unixoid mit älterem GNU grep?
Ja. Aber da siehst du mal, daß du auch bei 'GNU grep' nicht davon ausgehen kannst, daß alle Optionen bekannt sind. Bspw. gibt's den Schalter '-i' bei GNU sed noch nicht lange.
Eine portable Lösung (außer mit 'head') ist auch mit sed möglich:
sed -n '/foo/{p;q;}'
Danke für den Tip. Aber da das eh nur für den Hausgebrauch ist ist Portabilität nicht relevant.
Ja. Aber man sollte darüber Bescheid wissen.
Ach, kann man nicht einfach GNU / Bash als Referenz benutzen, wenn es eh mehr kann... ;-)
Kann man nicht (s.o.). Denn du kannst nicht davon ausgehen, daß die jew. Version alle "Features" kann. -dnh -- "Any technology, no matter how simple, is magic to those who do not understand it." -- Florence Ambrose in Freefall --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org
participants (4)
-
Bernhard Walle
-
David Haller
-
Malte Gell
-
Ralf Corsepius