Mehrere Dateien umwandel?

Dieses Thema im Forum "Programmieren allgemein" wurde erstellt von tiptel170, 17.04.2011.

  1. #1 tiptel170, 17.04.2011
    tiptel170

    tiptel170 Tripel-As

    Dabei seit:
    20.07.2008
    Beiträge:
    161
    Zustimmungen:
    0
    Hallo Leute,

    ich habe mir ein kleines script geschrieben, welches mir eine vcf-datei in ein datenbank-format automatisch umwandelt.

    Jetzt habe nicht eine vcf-datei auf meinem rechner, sonder mehrere.

    Wie kann ich es realsieren, mittels der for schleife dass mir alle vcf-dateien umgewandelt werden?

    Hier ein auschnitt von meinem script:

    Code:
    # Anfang
    USER="ms"
    BENUTZER="$USER"
    HOST="127.0.0.1"
    DC="dc=casa,dc=red"
    BasisDN="ou=Addresses,uid=$BENUTZER,ou=Users,$DC"
    INV="/tmp/inverssuche_$BENUTZER"
    VCFF="/mnt/Daten-1/Markus/vcf/Hallo_Welt.vcf"
    MANA="Administrator"
    PASSWD="geheim"
    DNIM="cn=$MANA,$DC"
    
    ERRVNNN="Vor- u. Nachname eintragen!"
    
    #dn: cn=Vorname Nachname;ouc=Adresses,uid=username,ou=Users,dc=casa,dc=red Erstellen:
    cat $VCFF | grep "^N\(:\|;\|;CHARSET=UTF-8\)" | sed -e "s/N;CHARSET=UTF-8://" | sed -e "s/N://" | tr ';' '\12' | tr -d '\r' > $INV/ldapdn1.ldif
    
    ...
    
    # Endteil
    
    ldapadd -h $HOST -x -D "$DNIM" -w $PASSWD < $INV/address.ldif
    
    
    if ( test -f $INV/address.ldif )
    then
    rm $INV/address.ldif.
    if ( ( test -f $INV/ldapaddr30.ldif ) || ( test -f $INV/ldapaddr21.ldif ) || ( test -f $INV/ldapaddr30-.ldif ) || ( test -f $INV/ldapaddr21-.ldif ) )
    then
    rm $INV/ldapaddr*.ldif
    fi
    echo "DONE..."
    fi
    
    
    Die variable VCFF da soll immer die nächste vcf-datei eingetragen werden.

    Gruss tiptel170
     
  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 tiptel170, 18.04.2011
    tiptel170

    tiptel170 Tripel-As

    Dabei seit:
    20.07.2008
    Beiträge:
    161
    Zustimmungen:
    0
    Niemand ne lösung?

    Vielleich mal andersherum:

    Ich habe z.B. 3 txt dateien, derren inhalt ist getrennt mittels ";". Nun möchte ich die drei dateien alle mit dem ";" umwandeln z.B. in ":". Ohne, dass ich das script änder muss.

    BSP:
    1. Datei test.txt
    12;56 => soll ersetzt werden dur 12:56

    2. Datei 34test.txt
    hhh;ztr => hhh;ztr

    3. Datei hollo.txt
    get;gtr => get:gtr

    und so weiter...

    Geht das habe mit for schleife probiert, allerdings bis jetzt noch keinen erfolg.

    Gruss tiptel170
     
  4. #3 saeckereier, 18.04.2011
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Seltsam.. Generelles Beispiel klappt direkt in der Kommandozeile (bash, nicht bezogen auf deine Fragen):
    Code:
    for i in * ; do
    echo $i
    done
    
    Das * wird dabei durch alle Dateien und Ordner durch die Bash ersetzt.
     
  5. #4 tiptel170, 19.04.2011
    tiptel170

    tiptel170 Tripel-As

    Dabei seit:
    20.07.2008
    Beiträge:
    161
    Zustimmungen:
    0
    Ich habe hier ein kleines script geschrieben, für zwei dateien:

    Code:
    #!/bin/sh
    
    A=*.txt
    for D1 in $A ; do
    cat $D1 | sed -e 's/;/:/g' > $A
    done
    
    
    Es wird mir nur eine datei mit derren inhalt umgewandelt und dann als *.txt ausgegeben. Dass sollte nicht sein, sondern beide dateien müssen gewandelt werden.

    Gruss tiptel170
     
  6. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Code:
    #!/bin/sh
    
    for D1 in *.txt ; do
    cat $D1 | sed -e 's/;/:/g' > $D1
    done
    
    
    So besser? Unter gnu-sed kannst Du auch auf 'cat' und die Umleitung verzichten, indem Du die Option '-i' benutzt.
     
  7. #6 tiptel170, 19.04.2011
    tiptel170

    tiptel170 Tripel-As

    Dabei seit:
    20.07.2008
    Beiträge:
    161
    Zustimmungen:
    0
    Danke für die info. Werd es mal probieren in der "großen" datei. In der test-datei habe ich es probiert.
     
  8. #7 tiptel170, 20.04.2011
    tiptel170

    tiptel170 Tripel-As

    Dabei seit:
    20.07.2008
    Beiträge:
    161
    Zustimmungen:
    0
    Nun ja, in dem script funktioniert es nicht so wie ich es möchte. Hier mal der anhang.
     

    Anhänge:

  9. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Ich kann es ohne input-Datei nicht testen, und da ich nicht weiss, was Du moechtest, faellt es mir auch schwer, zu sagen, was Du an dem Skript aendern muesstest. Allerdings faellt mir auf, dass Du die Variable VCFF als eine Datei definierst und dann eine Schleife ueber diese eine Datei laufen laesst. Das ist ja relativ witzlos:
    Code:
    VCFF="$INV/addr-ldap.vcf"
    ...
    for D1 in $VCFF ; do
    
    Ausserdem koennte es helfen, wenn Du in der ersten Zeile bash statt sh eintraegst - sh ist im Vergleich zu den anderen handelsueblichen Shells doch ein wenig eingeschraenkt.
     
  10. #9 tiptel170, 20.04.2011
    tiptel170

    tiptel170 Tripel-As

    Dabei seit:
    20.07.2008
    Beiträge:
    161
    Zustimmungen:
    0
    Die fehlermeldung lautet:

    Code:
    ./vcftoldap.txt: line 483: syntax error near unexpected token `done'
    ./vcftoldap.txt: line 483: `done'
    
    @rikola

    Generiere dir doch mal eine vcf-datei und trage diese dann ein. Natürlich die ldap-einstellungen abändern!

    Diese datei macht aus einer vcf eine ldif und trägt die adress-daten ein ein ldap-server ein.

    Witz los ist das ganze nicht! Es soll mir helfen ca. 200 -300 vcf-dateien in ldif umzuwandeln. Das mit der for schleife ist ein test, ich weiss nicht genau wo ich es "einbauen" muss, damit es funktioniert.

    Denn 200 dateien händisch in das script ein zutragen - wahnsinn und dauert zu lange!


    Gruss tiptel170
     
  11. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Ich weiss nicht, was eine vcf-Datei ist und welches Format sie hat. Der Farbgebung meines vi nach ist das 'done' am Ende der Datei unausbalanciert. Ich tippe auf ein fehlendes 'fi':
    Code:
    tg@nachtigaller:~/downloads$ grep -c -w if vcftoldap.txt 
    38
    tg@nachtigaller:~/downloads$ grep -c -w fi vcftoldap.txt 
    37
    
    obwohl das natuerlich ein Artefakt sein koennte.
     
  12. #11 tiptel170, 20.04.2011
    tiptel170

    tiptel170 Tripel-As

    Dabei seit:
    20.07.2008
    Beiträge:
    161
    Zustimmungen:
    0
    Eine ganz normal visittenkarten datei mit version 2.1 oder 3.0 kann beide versionen "übersetzen" in ldif.
     
  13. #12 tiptel170, 20.04.2011
    tiptel170

    tiptel170 Tripel-As

    Dabei seit:
    20.07.2008
    Beiträge:
    161
    Zustimmungen:
    0
    Das mit dem if, welches zu viel war, hat sich erledigt. Lag an der abfrage, wenn die vcf-datei vorhanden ist, dass das scrpit abgearbeitet wird.

    Allerdings hänge ich immer noch an dem selbem problem :-( :-(
     
  14. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    "normal" gehoert zu meinen Lieblingswoertern und faellt in die gleiche Kategorie wie "alle", "immer" und "nie".
    Wenn ich Dein Skript ausfuehre (mit einem eingefuegten 'fi') bekomme ich seitenweise Fehlermeldungen ueber nicht existierende Verzeichnisse und Dateien. Bevor ich oder jemand anderes hier im Forum das Skript jetzt fuer sein eigenes System anpasst, schlage ich daher vor, dass Du die Fehlermeldung, die Du bekommst, hier angibst, um dem Problem so naeher zu kommen.
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 tiptel170, 21.04.2011
    tiptel170

    tiptel170 Tripel-As

    Dabei seit:
    20.07.2008
    Beiträge:
    161
    Zustimmungen:
    0
    Bitte die ldapwerte anpassen! Hier an bei die korrigierte Datei. Ist jetzt nur für eine vcf-datei! Gruss tiptel170
     

    Anhänge:

  17. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Eigentlich wolltest Du doch nur wissen, wie Du Deine Skript fuer alle vcf-Dateien benutzen kannst, ohne sie von Hand eintragen zu muessen. Die Frage hat doch saeckereier Dir beantwortet, wo liegt denn dann noch Dein Problem?
     
Thema:

Mehrere Dateien umwandel?

Die Seite wird geladen...

Mehrere Dateien umwandel? - Ähnliche Themen

  1. Unterschiedlichen Text in mehrere Dateien finden und löschen / ersetzen

    Unterschiedlichen Text in mehrere Dateien finden und löschen / ersetzen: Moin erstmal, ich suche nach einer Möglichkeit, in mehreren unterschiedlichen Dateien Text mit folgendem Muster zu suchen und zu löschen oder...
  2. Mehrere Textdateien in STDOUT kopieren

    Mehrere Textdateien in STDOUT kopieren: Hallo zusammen, ich suche eine Möglichkeit, wie ich alle Dateien aus einem Verzeichnis (Textdateien) In die STDOUT kopieren kann bzw....
  3. Bash enscript mit mehreren Ordnern und Dateien

    Bash enscript mit mehreren Ordnern und Dateien: Hallo, Ich habe eine Ordner mit Unterordner in dem sich je mehrere verschiedenbenannte .java-Dateien befinden. Der Code: enscript -2rG...
  4. Mehrere Dateien kopieren und Zahl im Dateinamen beibehalten

    Mehrere Dateien kopieren und Zahl im Dateinamen beibehalten: Hey, angenommen, ich habe 3 Dateien: 04_DateiA, 04_DateiB, 04_DateiC und ich möchte die kopieren in: 05_DateiA, 05_DateiB, 05_DateiC , wie...
  5. BASH/AWK: Text aus mehreren Dateien in eine .txt verschieben

    BASH/AWK: Text aus mehreren Dateien in eine .txt verschieben: Hallo zusammen, habe eine neues Problem. Ich habe mehrere .txt Dateien die jeweils eine Zahl pro Zeile enthalten. Momentan sind es pro Datei 21...