Datei einlesen weiter verarbeiten...

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von cengiz, 26.07.2005.

  1. #1 cengiz, 26.07.2005
    Zuletzt bearbeitet: 26.07.2005
    cengiz

    cengiz Grünschnabel

    Dabei seit:
    26.07.2005
    Beiträge:
    6
    Zustimmungen:
    0
    Hallo,

    ich habe eine Datei mit folgenden INhalt
    Code:
    IPC00 	zr1   	Takt_01     	Create Eintrag im Rhf.Plan              
    ...
    Diese Datei besteht aus zych Zeilen von solchen einträgen...

    also ich kriege es hin die zeile aus zu lesen unfd auch nur den ersten parameter also in dem Fall "IPC00".

    also ich möchte ein IF einbauen wenn der erste Parameter mit FP* anfängt soll er diese Zeile in eine HTML-Datei schreiben oder wenn die mit IP* anfängt...und so weiter...

    wie gesagt ich kriege das mit IF nicht hin das ich ein WIldcard einsetzen kann dass er allles mit FP* filltern soll.


    Könnt ihr mir helfen?

    hab folgendes ausprobiert

    Code:
    if [ $fp = "FP*" ] ; then
    KOMMANDOS
    ;fi 
    
    if [ $fp = $regex* ]
    ...
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 pengo, 26.07.2005
    Zuletzt bearbeitet: 26.07.2005
    pengo

    pengo Grünschnabel

    Dabei seit:
    22.07.2005
    Beiträge:
    7
    Zustimmungen:
    0
    ich würde bevor ich die IF abfrage mache erst die eingabe einfach so zu recht stuzen das ich keine wIldcard brauch zb. mit head -c 2 oder mit grep

    if [ `echo $string | head -c 2` = "IP" ]; so würde es gehen wenn man immer die ersten zwei buchstaben vergleichen will

    oder if [ `echo $string | grep ^IP` ];

    $string = ausgelesener string

    ist villeicht nicht die schönste lösung aber müsst funktionieren
     
  4. #3 cengiz, 26.07.2005
    Zuletzt bearbeitet: 26.07.2005
    cengiz

    cengiz Grünschnabel

    Dabei seit:
    26.07.2005
    Beiträge:
    6
    Zustimmungen:
    0
    was meinst du mit ausgelesener $string...meisnt du die ganze zeile von der datei die ich auslese??


    also wenn ich head anwende kommt die ausgabe keine Verzeichnis oder Datei
     
  5. pengo

    pengo Grünschnabel

    Dabei seit:
    22.07.2005
    Beiträge:
    7
    Zustimmungen:
    0
    Ja die ausgelesen Zeile du muss ja dan ganz ihrgend wie in eine schleife habe oder so.

    hast du head so angewendet wei im beispiel oder head -c string?
     
  6. cengiz

    cengiz Grünschnabel

    Dabei seit:
    26.07.2005
    Beiträge:
    6
    Zustimmungen:
    0
    Code:
    cat $TMPFILE | while read zeile
    do
       
     fp=`echo $zeile | head -c 2` = "FP"`    
    
     if [ $fp = "FP"  ] ; then
      echo $fp
      ; fi
    done
    
     
  7. #6 pengo, 26.07.2005
    Zuletzt bearbeitet: 26.07.2005
    pengo

    pengo Grünschnabel

    Dabei seit:
    22.07.2005
    Beiträge:
    7
    Zustimmungen:
    0
    #!/bin/bash

    cat $TMPFILE | while read zeile
    do

    fp = $[ `echo $zeile | head -c 2` ]

    fp=`echo $zeile | head -c 2`;

    if [ `echo $zeile | head -c 2` = "FP" ] ; then
    echo $fp;
    fi;

    done

    und wenn das nicht geht

    #!/bin/bash

    cat $TMPFILE | while read zeile
    do

    fp=`echo $zeile | grep ^FP`;

    if [ `echo $zeile | grep ^FP` ] ;
    then
    echo $fp;
    fi;

    done
     
  8. cengiz

    cengiz Grünschnabel

    Dabei seit:
    26.07.2005
    Beiträge:
    6
    Zustimmungen:
    0
    bei dem zweiten beispiel kommt die fehlermeldung Dateiname[zeile]. zr6: unknown test operator und das sehrt oft

    beim ersten komm diese fehlermeldung
    2: Keine Datei und kein Verzeichnis
    Dateiname[Zeile] : test: argument expected

    und das auch sehr oft
     
  9. pengo

    pengo Grünschnabel

    Dabei seit:
    22.07.2005
    Beiträge:
    7
    Zustimmungen:
    0
    Code:
    #!/bin/bash
    
    TEMPFILE="path";
    
    cat $TEMPFILE | while read zeile
    do 
    
    fp=`echo $zeile | head -c 2`;
    
    if [ `echo $zeile | head -c 2` = "FP" ] ; 
    then
      echo $fp;
    fi;
    
    done;
    
    der code funktionier bei mir einwand frei das mit grep geht nicht weil es leider die ganze zeile ausgibt habe ich vergessen sorry ich schaue manch mal nicht richtig hin

    pengo
     
  10. #9 cengiz, 27.07.2005
    Zuletzt bearbeitet: 27.07.2005
    cengiz

    cengiz Grünschnabel

    Dabei seit:
    26.07.2005
    Beiträge:
    6
    Zustimmungen:
    0
    Hallo,

    so der COde klappt auch nicht.

    2: Keine Datei und kein Verzeichnis
    tmp2html[11] : test: argument expected

    kommt diese Fehlermeldung.

    also ich hab mir mal die freiheit genommen und die semikolons weggemacht die du rein gesetzt hast. also bei veriablen deklaration und bei der ausgabe denn ich meine die gehören nicht hin...wenn ich falsch liege korrigert mich

    achja meine shell ist: ksh

    €dit

    ich hab mal ein bisschen rum gespielt und habe nun die zwei Buchstaben der erste Zeile "gefiltert" bekommen

    Code:
    cat $TEMPFILE | awk '{print(substr($1,1,2))}'
    so gibt er mir die ganzen zeilen der ersten spallte mit 2 Zeichen aus :D
     
  11. #10 Wolfgang, 27.07.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Ich hab hier zwar keine ksh, aber wenn ich aus einer Variablen nur die ersten beiden Zeichen filtern will, nutze ich folgendes:

    Var="AB und noch mehr"
    echo ${Var:0:2}

    AB
    Würd mich mal interessieren, ob sowas auch unter der ksh funktioniert.

    Gruß Wolfgang
    PS Gibt es einen Grund für die Nutzung der ksh?
     
  12. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  13. cengiz

    cengiz Grünschnabel

    Dabei seit:
    26.07.2005
    Beiträge:
    6
    Zustimmungen:
    0
    Hi,

    also damit alle bescheid wissen...ich mache ein Betriebspraktikum und die haben nun mal Unix (HP-UX) mit der Shell ksh

    also deine Variante habe ich bei google auch gefunden aber die funktionierte nicht. die fehlermeldung kann ich dir im mom nicht sagen weil ich zuhause sitze. wenn du es wissen möchtest kann ich es morgen früh posten :)
     
  14. #12 neutrino1, 01.08.2005
    neutrino1

    neutrino1 Mitglied

    Dabei seit:
    03.05.2005
    Beiträge:
    30
    Zustimmungen:
    0
    Hi!

    Ist sowas für deine Zwecke ausreichend?

    Code:
    cat $TMPFILE|while read;do
    case $(echo ${REPLY}|cut -c1,2) in
          IP)echo "Mach was mit ${REPLY}";;
          FP)echo "Mach was anderes mit ${REPLY}";;
       XY|AP)echo "Tu was bestimmtes mit ${REPLY}";;
           *)echo "Dieser Code darf eigentlich nicht vorkomen";exit 1;;
    esac
    done
    • ${REPLY} enthält die komplette Zeile
    • bei einem Zeilenanfang XY oder AF wird der selbe code ausgeführt (nur als Hinweis)
    • Kommt keiner der 4 genannten codes (IP,FP,XY,AP) am Anfang einer Zeile vor, dann bricht das script ab
    Die Idee mit ${REPLY:0:2} ist gut, funktioniert aber zumindest mit der ksh88 nicht.

    Ciao
     
Thema:

Datei einlesen weiter verarbeiten...

Die Seite wird geladen...

Datei einlesen weiter verarbeiten... - Ähnliche Themen

  1. SED: Zu bearbeitende Dateien aus Textfile einlesen

    SED: Zu bearbeitende Dateien aus Textfile einlesen: Tag zusammen, entweder ich suche nach den falschen Stichworten, oder ich mache was falsch. Mein Problem : Mit dem Befehl grep -Rsl...
  2. Datei einlesen, veränder und ausgeben mit AWK

    Datei einlesen, veränder und ausgeben mit AWK: Hallo, Ich will eine Datei, in der eine Literaturliste steht mit Hilfe von AWK Zeile für Zeile einlesen, dann die Datei so verändern, dass zB....
  3. Schleife zum einlesen vieler Dateien funktioniert nicht

    Schleife zum einlesen vieler Dateien funktioniert nicht: [gelöst] Schleife zum einlesen vieler Dateien funktioniert nicht Hallo Leute, ich habe ein kleines Problem. Mein Script zerlegt eine große...
  4. Datei in shellscript Zeilenweise einlesen

    Datei in shellscript Zeilenweise einlesen: Eine Frage an die Linux-Gemeinde: Wie kann ich in einem Bash-Script eine Datei Zeilenweise einlesen und das Ergebnis als Parameter übergeben...
  5. Problem beim Einlesen von Pfaden mit Leerzeichen aus Textdatei

    Problem beim Einlesen von Pfaden mit Leerzeichen aus Textdatei: Wünsche einen schönen Sonntag :) Ich habe eine Textdatei angelegt und dort Datei- und Verzeichnispfade hineingeschrieben (eine Zeile = ein...