Anzeige:
Ergebnis 1 bis 12 von 12

Thema: tcsh :s/old/new/

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    19.10.2005
    Beiträge
    40

    tcsh :s/old/new/

    Hallo Leute,

    ich will in einem Tcsh-script mittels

    Code:
    :s/old/new/
    substitutieren. Der String new ist jedoch beim Erstellen des scriptes nicht
    bekannt, denn new soll der erste Parameter des scriptes sein.
    Wie bekomme ich das hin? Ich bräuchte so etwas wie

    Code:
    :s/old/$1/
    Dann wird aber old durch $1 und nicht durch den ersten Parameter ersetzt.
    Wie bekomme ich das hin?

    Daniel

  2. #2
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Ungetestet:

    Code:
    ":s/old/"$1"/"
    MfG Bischi
    Geändert von bischi (06-04-2010 um 16:01 Uhr)

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.10.2005
    Beiträge
    40
    Hallo Bischi,

    das geht noch nicht ganz. Das script rtest (Minimalbeispiel) sieht jetzt so aus:

    Code:
    #!/bin/tcsh
    foreach filename (`ls *JPG`)
       set f = $filename":s/P/"$1"/"
       echo $filename $f
       mv $filename $f
    end
    Im aktuellen Verzeichnis ist nur eine Datei PC050005.JPG.
    Der Aufruf rtest xxx liefert:

    Code:
    localhost:~/t$ rtest xxx
    PC050005.JPG PC050005.JPG:s/P/xxx/
    mv: cannot move `PC050005.JPG' to `PC050005.JPG:s/P/xxx/': No such file or directory
    Exit 1
    Daniel

  4. #4
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Wie sähe denn dein Aufruf ohne Script für eine Datei aus? Bzw - existiert der Ordner xxx?

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.10.2005
    Beiträge
    40
    Zitat Zitat von bischi Beitrag anzeigen
    Wie sähe denn dein Aufruf ohne Script für eine Datei aus?
    Wenn ich das ganze für eine Datei von der Kommandozeile aus mache, dann
    kann ich auf die ganzen Substitutionen verzichten:

    Code:
    mv PC050005.JPG  xxxC050005.JPG
    Zitat Zitat von bischi Beitrag anzeigen
    Bzw - existiert der Ordner xxx?
    Im aktuellen Verzeichnis gibt es keine Unterverzeichnisse. Wenn ich aber
    Unterverzeichnisse PC050005.JPG:s/P/xxx/ anlege, dann bewegt das script
    die Datei PC050005.JPG in dieses Verzeichnis.

    Aber wenn ich die Sache bedenke: Es läuft wieder einmal darauf hinaus,
    Kopfstände und Klimmzüge zu machen, um ein banales Problem zu lösen.
    Es geht hier um irgendwelche Feinheiten bei der Behandlung von Substitutionen
    durch die tcsh.

    Das eigentliche Problem besteht darin, bei allen Bilddateien im Verzeichnis das P im
    Dateinamen durch eine Jahreszahl zu ersetzen. Diese Jahreszahl wollte ich als
    Parameter übergeben. Da aber nur die Jahreszahlen 2004 bis 2010 vorkommen,
    kann ich einfach 7 scripte schreiben, und das Problem ist gelöst.......

    MfG, Daniel

  6. #6
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Ohne die tcsh jetzt im Detail zu kennen:

    die mv Synthax sieht wie auf der Bash aus. Und

    Code:
    PC050005.JPG:s/P/xxx/
    sieht für mich nicht wie ein gültiger Ordnernamen aus... Oder hab ich da was falsch verstanden?

    MfG Bischi

    PS: Funktioniert folgendes? Mit oder ohne erstelltem Ordner?

    Code:
    #!/bin/tcsh
    foreach filename (`ls *JPG`)
       set f = "/P/"$1"/"$filename
       echo $filename $f
       mv $filename $f
    end

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •