Hallo Liste, ich möchte erreichen, dass die Pfade in meiner Variablen gestrichen sind. Also: Das Verzeichnis cxsc hat zwei Unterverzeichnisse c1 und c2 #!/bin/sh PF=/test/cxsc NAMES=`find $PF -type d -print|sort -r|grep $DBPATH/|sed -e 's|$DBPATH||g'` echo $NAMES Die Ausgabe sollte eigentlich "c1 c2" ausspucken und nicht "/test/cxsc/c1 /test/cxsc/c2". Es scheitert am sed. Der schneidet den Pfad nicht raus. Wo liegt der Fehler? Gruß Boris
#!/bin/sh PF=/test/cxsc NAMES=`find $PF -type d -print|sort -r|grep $DBPATH/|sed -e 's|$DBPATH||g'` echo $NAMES
Die Ausgabe sollte eigentlich "c1 c2" ausspucken und nicht "/test/cxsc/c1 /test/cxsc/c2". Es scheitert am sed. Der schneidet den Pfad nicht raus. Wo liegt der Fehler?
Variablen werden nur " " expandiert, aber nicht in ' '. Also besser (richtiger): sed -e "s|$DBPATH||g" Thomas Mack
Hallo, On 2/1/2006 3:17 PM, Boris Höffgen wrote:
Hallo Liste,
ich möchte erreichen, dass die Pfade in meiner Variablen gestrichen sind.
Also: Das Verzeichnis cxsc hat zwei Unterverzeichnisse c1 und c2
#!/bin/sh PF=/test/cxsc NAMES=`find $PF -type d -print|sort -r|grep $DBPATH/|sed -e 's|$DBPATH||g'` echo $NAMES
Die Ausgabe sollte eigentlich "c1 c2" ausspucken und nicht "/test/cxsc/c1 /test/cxsc/c2". Es scheitert am sed. Der schneidet den Pfad nicht raus. Wo liegt der Fehler?
Vielleicht an $DBPATH statt $PF? Oder was seht in $DBPATH? Arno
Gruß Boris
-- IT-Service Lehmann al@its-lehmann.de Arno Lehmann http://www.its-lehmann.de
Hallo, Arno Lehmann wrote:
Hallo,
On 2/1/2006 3:17 PM, Boris Höffgen wrote:
Hallo Liste,
ich möchte erreichen, dass die Pfade in meiner Variablen gestrichen sind.
Also: Das Verzeichnis cxsc hat zwei Unterverzeichnisse c1 und c2
#!/bin/sh PF=/test/cxsc NAMES=`find $PF -type d -print|sort -r|grep $DBPATH/|sed -e 's|$DBPATH||g'` echo $NAMES
Die Ausgabe sollte eigentlich "c1 c2" ausspucken und nicht "/test/cxsc/c1 /test/cxsc/c2". Es scheitert am sed. Der schneidet den Pfad nicht raus. Wo liegt der Fehler?
Vielleicht an $DBPATH statt $PF?
Oder was seht in $DBPATH?
Jepp, DBPATH ist natürlich gleich FP. Boris
Hallo, Am Wed, 01 Feb 2006, Boris Höffgen schrieb:
ich möchte erreichen, dass die Pfade in meiner Variablen gestrichen sind.
Also: Das Verzeichnis cxsc hat zwei Unterverzeichnisse c1 und c2
#!/bin/sh PF=/test/cxsc NAMES=`find $PF -type d -print|sort -r|grep $DBPATH/|sed -e 's|$DBPATH||g'` echo $NAMES
1. In '' expandiert die shell keine Variablen. 2. 'grep | sed' ist ueberfluessig. Richtig waere: NAMES=`find "$PF" -type d -print | sort -r | sed -n "/$PF/s|$PF||g"` 3. find kann das auch selber => man find -> -printf find "$PF" -type d -printf '%f\n' | sort -r oder find "$PF" -type d -printf '%P\n' | sort -r oder find "$PF" -type d -printf '%p\n' | sort -r je nachdem was du willst. -dnh -- Every fleeting thought you've ever had in your life, no matter how bizarre, is someone's lifelong obsession. And he has a website. -- Skif's Internet Theorem
Boris Höffgen wrote:
ich möchte erreichen, dass die Pfade in meiner Variablen gestrichen sind.
Also: Das Verzeichnis cxsc hat zwei Unterverzeichnisse c1 und c2
#!/bin/sh PF=/test/cxsc NAMES=`find $PF -type d -print|sort -r|grep $DBPATH/|sed -e 's|$DBPATH||g'` echo $NAMES
Die Ausgabe sollte eigentlich "c1 c2" ausspucken und nicht "/test/cxsc/c1 /test/cxsc/c2". Es scheitert am sed. Der schneidet den Pfad nicht raus. Wo liegt der Fehler?
Mal davon abgesehen, dass a) das Skript mehrere Fehler enthaelt (z.B. das sed-Kommando), b) ein grep in Verbindung mit sed immer ueberfluessig ist (sed kann selbst auf eine Adress-Uebereinstimmung testen), c) das Skript, selbst wenn es funktionieren wuerde, vermutlich drei Verzeichnisse ausspucken wuerde (naemlich c1, c2 und cxsc selbst), und d).... Naja ich hoere schon auf. Jedenfalls ist das ganze grep, sort, sed, etc. unnoetig, und das Problem laesst sich mit einem einfachen $> find /test/cxsc/ -type d -printf "%f\n" erschlagen. Cheers, Th.
participants (5)
-
Arno Lehmann
-
Boris Höffgen
-
David Haller
-
Thomas Hertweck
-
Thomas Mack