Pro-Linux.de

Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Pro-Linux.de

Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 18. Nov 2018 0:14

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: suchen und ersetzen
BeitragVerfasst: 29. Jun 2006 15:46 
Offline

Registriert: 13. Apr 2004 10:14
Beiträge: 53
Hallo,

ich möchte in einer Datei alle Datumseinträge ändern. Und zwar stehen die als z.B
Mrz 26
und ich möchte daraus
2603 machen.
Einige Versuche habe ich schon hiner mir aber es will so richtig nicht funktionieren :oops:
Hat vielleicht jemand von euch eine kleine Hilfe für mich?

Vielen Dank erstmal

lilo

_________________
Viele Späße
kiko


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 29. Jun 2006 22:40 
Offline
prolinux-forum-admin

Registriert: 26. Jun 2004 21:18
Beiträge: 1444
Was ähnliches hatte ich mal. Da ich bei >5 Zeilen-shell-Synkrank^Wtax Kopfschmerzen bekomme, hab ich mir was in C gebastelt. Wenns nicht unbedingt sh sein muß, sag Bescheid. Dann tüddel ich dir das schnell passend.

MfG, Klopskuchen

edit. Stehen diese Datumseinträge generell am Zeilenanfang?

_________________
When all else fails, read the instructions .


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 30. Jun 2006 7:30 
Offline

Registriert: 13. Apr 2004 10:14
Beiträge: 53
Hi klopskuchen,

vielen Dank erstmal.
Shell wäre mir wirklich lieber aber wir können es ja auch mit C probieren. Wäre echt nett wenn du mir helfen könntenst.

_________________
Viele Späße
kiko


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 30. Jun 2006 8:02 
Offline
prolinux-forum-admin

Registriert: 26. Jun 2004 21:18
Beiträge: 1444
Code:
#!/bin/sh

# genügend Argumente?
if [ $# -lt 2 ]
then
    echo "----------------------------------"
    echo "Einzugeben: $0 Datei-alt Datei-neu"
    echo "----------------------------------"
    exit 1;
fi

# gibt es die zu lesende Datei?
if [ ! -e $1 ]
then
    echo "--------------------------------------------"
    echo "Aus $1 kann nichts gelesen werden, wie auch?"
    echo "$1 gibts ja gar nicht."
    echo "--------------------------------------------"
    exit 1;
fi

# soll eine vorhandene Datei überschrieben werden?
if [ -e $2 ]
then
    echo "--------------------------------"
    echo "Die Datei $2 existiert bereits. "
    echo "Wirklich dran rumfummeln?       "
    
    while :
    do
        echo 
        echo "Weitermachen: j"
        echo "Abbrechen   : n"
        read x
        case $x in
            j)  break                    ;;
            n)  echo "Abbruch"; exit     ;;
            *)  echo "!Falsche Eingabe!" ;;
        esac
    done
fi

##############################
#    "richtiger"  start      #
##############################

oldFile=$1
newFile=$2

while read LINE
do
    MON=`echo $LINE |cut -c1-3`
    YEA=`echo $LINE |cut -c5-6`
    END=`echo $LINE |cut -c7-0`
    case $MON in
        Jan)  MON="01" ;;
        Feb)  MON="02" ;;
        Mrz)  MON="03" ;;
        Apr)  MON="04" ;;
        Mai)  MON="05" ;;
        Jun)  MON="06" ;;
        Jul)  MON="07" ;;
        Aug)  MON="08" ;;
        Sep)  MON="09" ;;
        Okt)  MON="10" ;;
        Nov)  MON="11" ;;
        Dez)  MON="12" ;;
          *)  echo "Hier ging was schief, 13. Monat?"
              exit 1 ;;
    esac

    NL=$YEA$MON$END
    echo $NL >>$newFile

done < $oldFile

exit 0;
In obigem script wird je eine Eingabezeile aus der Datei in drei Teile zerlegt. Drei Zeichen Monat, zwei Zeichen Jahr und der Rest der Zeile, wobei ich davon ausgehe das das Datum am Zeilenanfang steht. Und Monatskürzel anpassen.


MfG, Klopskuchen

_________________
When all else fails, read the instructions .


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 30. Jun 2006 8:16 
Offline

Registriert: 13. Apr 2004 10:14
Beiträge: 53
Wow :shock:
Das hast du aber nicht jetzt auf die Schnelle geschrieben oder?
Auch Funktionen und Fehler abgefangen. Man ich probiere es und schreib nochmal. :wink:

Bis später

_________________
Viele Späße
kiko


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 04. Jul 2006 9:32 
Offline

Registriert: 13. Apr 2004 10:14
Beiträge: 53
Hier bin ich wieder. Das Skript ist echt gut. Ein paar Details nur. Diese Datumsangaben wenn die in einer Zeile vorkommen sind die immer an gleiche Stelle. Nur die sind nicht in jeder Zeile.
Und ich würde gerne den kompletten Inhalt der Datei behalten und nur diese Stellen abändern. Das heißt er Zeile für Zeile in der neuen Datei eintragen, und falls an der besagten Stelle das Format vorkommt dann soll es ändern und dann die Zeile in der neuen Datei schreiben.

Beispiel

Diese Zeile ist nur blabla --> Diese soll er unverändert in der neuen Datei einfügen
Diese Zeile hat aber Mrz 30--> Diese soll als "Diese Zeile hat aber 3003" eingefügt werden.

Ich hoffe ich habe es verständlich genug formuliert.

_________________
Viele Späße
kiko


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 04. Jul 2006 14:24 
Offline
prolinux-forum-admin

Registriert: 26. Jun 2004 21:18
Beiträge: 1444
Der Teil vor dem auskommentierten "start" kann bleiben wie er ist.
Code:
##############################
#           start            #
##############################
 
 oldFile=$1
 newFile=$2
 
 while read LINE
 do
     bool=0
     MON=`echo $LINE |cut -c1-3`
     YEA=`echo $LINE |cut -c5-6`
     END=`echo $LINE |cut -c7-0`
     case $MON in
         Jan&#41;  MON="01" ;;
         Feb&#41;  MON="02" ;;
         Mrz&#41;  MON="03" ;;
         Apr&#41;  MON="04" ;;
         Mai&#41;  MON="05" ;;
         Jun&#41;  MON="06" ;;
         Jul&#41;  MON="07" ;;
         Aug&#41;  MON="08" ;;
         Sep&#41;  MON="09" ;;
         Okt&#41;  MON="10" ;;
         Nov&#41;  MON="11" ;;
         Dez&#41;  MON="12" ;;
           *&#41;  bool=1   ;;
     esac
 
 if &#91; bool = 0 &#93;
 then
     NL=$YEA$MON$END
     echo $NL >>$newFile
 else
     echo $LINE >>$newFile
 fi
 
 done < $oldFile
 
 exit 0;
Für die Bearbeitung von Textdateien sind solche Frickelskripte nicht das Optimum. Für sowas eignet sich besser (wertungsfrei und in alphabetischer Reihenfolge):
awk: http://www.itbeginner.de/awk.0.html
perl: http://www.perlunity.de/perl/tutorial/index.shtml
python: http://wiki.python.de/


MfG, Klopskuchen

_________________
When all else fails, read the instructions .


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 05. Jul 2006 9:29 
Offline

Registriert: 13. Apr 2004 10:14
Beiträge: 53
Herzlichen Dank nochmal,

ich habe das erstmal um das zu machen was ich wollte, aber ich werde versuchen es mit awk und sed etwas eleganter zu machen.

Danke vielmals :lol:

_________________
Viele Späße
kiko


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de