perl expression

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von opino, 09.11.2006.

  1. opino

    opino Tripel-As

    Dabei seit:
    27.10.2006
    Beiträge:
    179
    Zustimmungen:
    0
    folgendes beispiel stammt von der rename manpage:

    rename 's/\.bak$//' *.bak

    ich verstehe die Per expression nicht.

    s/ soll sicherlich suchen sein.
    was bedeutet \.bak
    was macht die variable dort?
    was bedeuten die zwei \\ am ende?

    wie muss die Expression lauten wenn ich die dateien v1.txt v2.txt v3.txt in l1.txt l2.txt und l3.txt umbennenen will.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Xanti, 09.11.2006
    Zuletzt bearbeitet: 09.11.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    s bedeutet suche und ersetze, in der Art:

    Code:
    s/muster/replace/
    \.bak$ bedeutet: matche alles, was mit .bak endet. Der Punkt hat in den reg. exp. eine besondere Bedeutung und muss deshalb escaped werden. $ bezeichnet keine Variable, sondern das Ende des Strings. Es werden also .bak am Ende der Filenamen abgeschnitten.

    Gruss, Xanti

    edit: Bez. Deiner Rename-Anfrage müsste der reg. Ausdruck : 's/^v/|/' lauten. Aber im Ernst, Du willst doch nicht etwa eine Pipe in die Filenamen friemeln?
     
  4. opino

    opino Tripel-As

    Dabei seit:
    27.10.2006
    Beiträge:
    179
    Zustimmungen:
    0
    danke für die schnelle antwort.

    ehrlich gesagt weiss ich nicht wie man es am elegantesten löst.
    Ich wollte einen einzeiler machen da dachte ich mit rename.
    ich habe noch diese möglichkeit mit for schleife gefunden aber da sind auch auch perl ausdrücke drin deswegen fragte ich was die bedeuten.

    Also neme ich an for schleife ist besser?
     
  5. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Keine Ahnung, was da besser ist, da ich nicht weiss, was Du machen willst.
     
  6. opino

    opino Tripel-As

    Dabei seit:
    27.10.2006
    Beiträge:
    179
    Zustimmungen:
    0
    also ich bin gerade total am verzweifeln.
    mein problem: ich habe dateien
    versuch1.txt
    versuch2.txt
    versuch3.txt
    versuch4.txt

    daraus soll werden
    latex_tb_1.tex
    latex_tb_2.tex
    latex_tb_3.tex

    Ich verstehe das mit den Wildcards bei rename nicht.
    Warum geht nicht rename versuch*.txt latex_tb*.tex?

    Bitte sag nich das ist ein anfänger fehler, das hatte ich heute schon.
     
  7. #6 Jabo, 10.11.2006
    Zuletzt bearbeitet: 10.11.2006
    Jabo

    Jabo Aufgabe ohne Minister

    Dabei seit:
    12.10.2006
    Beiträge:
    1.322
    Zustimmungen:
    0
    Ort:
    Hamburg
    Wildcard und Regexp

    Hallo,

    beim rot eingefärbten Stern ist in dem Befehl nicht klar, was hin soll, das könnte sonstwas sein, du willst aber eine konkrete Zahl.

    Ich würde in Perl alle txt-Namen in ein Array packen, in einer Schleife die Nummer hochzählen und dabei den jeweiligen Tex-Namen ausgeben. Ist ja total schematisch auf beiden Seiten, nur die Nummer ändert sich.

    [Edit]
    Zu regulären Ausdrücken:
    Überhaupt ist die Perl-Einführung von Selfhtml eine lesenswerte Sache.
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. #7 Wolfgang, 10.11.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Das geht sogar viel schneller und eleganter mit der Shell, wenn du Bash oder Ksh benutzt.
    Code:
    for i in $(seq 4); do mv versuch${i}.txt latex_tb_${i}.tex ;done

    Gruß Wolfgang
     
  10. #8 Xanti, 10.11.2006
    Zuletzt bearbeitet: 10.11.2006
    Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    <Dummschwätz>
    Deine Abbildung ist nicht injektiv. ;)
    </Dummschwätz>

    Auch wenn Wolfgang bereits eine Lösung präsentiert hat, will ich noch die Möglichkeit mit rename angeben:

    Code:
    rename 's/^versuch(\d+).txt/latex_tb_$1.tex/' versuch*.txt
    
    Gruss, Xanti
     
Thema:

perl expression

Die Seite wird geladen...

perl expression - Ähnliche Themen

  1. Linux Foundation: Hyperledger-Projekt startet mit 30 Mitgliedern

    Linux Foundation: Hyperledger-Projekt startet mit 30 Mitgliedern: Das Hyperledger-Projekt der Linux Foundation will eine neue Form der dezentralisierten Kontoführung nach dem Prinzip der »distributed ledger« bei...
  2. Perl 6 offiziell vorgestellt

    Perl 6 offiziell vorgestellt: Wie erwartet, ist die Version C(hristmas) von Perl 6 veröffentlicht worden. Perl 6 stellt nicht, wie der Name suggeriert, einen Nachfolger von...
  3. Perl: 20 Jahre CPAN

    Perl: 20 Jahre CPAN: Vor 20 Jahren wurde das erste Modul in das Comprehensive Perl Archive Network (CPAN) hochgeladen, woran Neil Bowers mit einem Abriss der...
  4. Perl 5.22.0 freigegeben

    Perl 5.22.0 freigegeben: Die neue Version 5.22 von Perl bringt den Anwendern mehr Sicherheit bei Eingabedateien, Unicode 7.0 und zahlreiche weitere Verbesserungen....
  5. [Perl] Perl OO Methodenaufruf in anderem Objekt

    [Perl] Perl OO Methodenaufruf in anderem Objekt: Hallo, Ich bin dabei in Perl ein Pokerspiel zu programmieren, hänge aber momentan an einem Problem, wo ich nicht weiterkomme. Ich habe die...