Hallo, wie kann man die Ausgabe eines Befehls als Argument eines anderen in einer Pipe verwenden? also z.B. (wirklich nur z.B.): ls *.html | grep "Baum" <hier die Ausgabe des ersten Befehls> Grüße Johannes -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Hallo, On 10-Jul-2006 Johannes Reese wrote:
Hallo, wie kann man die Ausgabe eines Befehls als Argument eines anderen in einer Pipe verwenden?
also z.B. (wirklich nur z.B.):
ls *.html | grep "Baum" <hier die Ausgabe des ersten Befehls>
ls *.html | xargs grep "Baum" Beste Gruesse, Heinz. -- Reisefuehrer Bulgarien u.a: http://www.erlebnis-bulgarien.de Reiseberichte Osteuropa: http://www.pahlke-online.de Barrierefreies Webdesign: http://www.Pahlke-KunstWebDesign.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Mahlzeit, ich hänge mich mal an: Am 10.07.2006 13:06 schrieb Heinz W. Pahlke:
ls *.html | xargs grep "Baum"
Bei grep geht das so. Was ist aber mit basename? Wie erkläre ich dem dass ich ...| xargs basename <AUSGABE des ersten Befehls> .html ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ haben will? Womit muss ich das in den Klammern ersetzen? (Wobei da sicher noch einige Sachen fehlen könnten im Aufruf, mir gings nur um ein allgemeines Beispiel). OJ -- Die Kelten waren mathematisch hochgradig unbegabt. Das läßt sich an den Hügelgräbern erkennen; Gruben mit Vorzeichenfehlern. (unbekannt)
Am Montag, 10. Juli 2006 22:58 schrieb Johannes Kastl:
Am 10.07.2006 13:06 schrieb Heinz W. Pahlke:
ls *.html | xargs grep "Baum"
Bei grep geht das so. Was ist aber mit basename? Wie erkläre ich dem dass ich ...| xargs basename <AUSGABE des ersten Befehls> .html ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ haben will? Womit muss ich das in den Klammern ersetzen?
Du kannst den ersten Befehl in `` setzen. Also z.B. so: basename `ls *.html` .html Gruß, Achim -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Am 10.07.2006 23:28 schrieb Achim Schäfer:
Du kannst den ersten Befehl in `` setzen. Also z.B. so:
basename `ls *.html` .html
Ich weiß, aber A) ist das nicht immer möglich, dafür gibt es xargs ja. und B) war auch das nur ein Beispiel, wo das per Pipe angelieferte "Argument" nicht am Ende angegeben wird, sondern mittendrin. OJ -- Bei den alten Filmen waren irgendwie die geraden Teile besser (2, 4, 6) als die ungeraden (1, 3, 5). Teil 1 als "Kubrick für Arme", Teil 3 als Bindeglied zwischen Teil 2 und 4 und Teil 5 als "Kirk goes Mad Max". ;-) (Kai Hildebrandt in d.r.s.s.enterprise)
Hallo, Am Mon, 10 Jul 2006, Johannes Kastl schrieb:
Am 10.07.2006 23:28 schrieb Achim Schäfer:
Du kannst den ersten Befehl in `` setzen. Also z.B. so:
basename `ls *.html` .html
Das wird nicht klappen. Basename verarbeitet nicht beliebig viele Dateinamen. $ basename --help Usage: basename NAME [SUFFIX] ^^^^ Genau ein Name. Das naechste wird als "SUFFIX" interpretiert.
Ich weiß, aber A) ist das nicht immer möglich, dafür gibt es xargs ja. und B) war auch das nur ein Beispiel, wo das per Pipe angelieferte "Argument" nicht am Ende angegeben wird, sondern mittendrin.
machwas | while read -r name; do basename "$name" .html; done Sowas steht eigentlich in jedem Shell-Intro. Schau mal auf http://selflinux.{de,org?} -dnh -- Multidimensionale Ordnung sieht fuer den einfach gestrickten Betrachter halt meistens wie Chaos aus, weil er die Ordnung nicht erfassen kann. -- Juergen P. Meier -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Am 11.07.2006 20:08 schrieb David Haller:
machwas | while read -r name; do basename "$name" .html; done
Auch eine Möglichkeit.
Sowas steht eigentlich in jedem Shell-Intro. Schau mal auf http://selflinux.{de,org?}
Ich hatte eigentlich nur nach der Möglichkeit bei xargs gesucht, die ich ja mittlerweile gefunden hab. Ich dachte das wäre sowas wie bei find: find *.html -exec ls {} \; ^^^ Auf die Idee dass das per --replace geht wäre ich beim Durchlesen der man-page nicht gekommen. OJ -- The United States of America is the only empire in history to have gone from Barbarism directly to Decadence, without any intervening period of Civilisation. (Oscar Wilde)
Johannes Kastl, Montag, 10. Juli 2006 22:58:
Bei grep geht das so. Was ist aber mit basename? Wie erkläre ich dem dass ich ...| xargs basename <AUSGABE des ersten Befehls> .html ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ haben will? Womit muss ich das in den Klammern ersetzen? (Wobei da sicher noch einige Sachen fehlen könnten im Aufruf, mir gings nur um ein allgemeines Beispiel).
Aus man xargs: --replace[=replace-str], -i[replace-str] Replace occurences of replace-str in the initial-arguments with names read from standard input. -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Am 10.07.2006 23:36 schrieb Andre Tann:
Aus man xargs:
--replace[=replace-str], -i[replace-str] Replace occurences of replace-str in the initial-arguments with names read from standard input.
find -iname "*.rpm" -print0|xargs -0 -iXXX basename XXX .rpm Klappt. Trotzdem wäre ich nie darauf gekommen, anscheinend hatte ich den Teil überlesen, oder einfach nicht mit meiner Frage in Verbindung gebracht. Wer kommt schon drauf dass er sich selbst den Platzhalter definieren darf... ;-) OJ -- Auch Los Angeles finde ich interessant, aber wohnen möchte ich dort nicht. Als Schauspielerin muss ich mich immer von neuem mit Realität aufladen, und mich nicht in Luxus-Villen mit meterhohen Sicherheitszäunen verstecken. (Keira Knightley, spiegel.de/panorama/0,1518,408571,00.html)
participants (6)
-
Achim Schäfer
-
Andre Tann
-
David Haller
-
Heinz W. Pahlke
-
Johannes Kastl
-
Johannes Reese