Inhalt aus File lesen und vergleichen

  • Ersteller blueunderground
  • Erstellt am
blueunderground

blueunderground

Mitglied
Hi Zusammen,

folgendes schreibe ein Skript wo ich zwei Werte vergleichen möchte, dazu erzeuge ich das aktuelle Datum:

##
datum1= date '+%d.%m.%Y'

und lese eine weitere Variable ein (ist das korrekt?)
datum2= cut -f1 file1

möchte nun dieses Ergebnis mit einem anderen Datum welches in file1 steht vergleichen.

if [ "$datum1" = "$datum2" ]; then
echo "OK"
else
echo "FALSCH"
fi
##

Leider sagt er mir immer OK, auch wenn das Datum sich in file1 mit dem aktuellen unterscheidet.

Habt ihr Vorschläge?
Bin wie man erkennt ein absoluter Newbie :-)
Vielen Dank für Eure Hilfe

Blue
 
Hallo blueunderground

willkommen im U-Forum.
Die Erstellung von datum1 und datum2 ist falsch.

Code:
datum1=$(date '+%d.%m.%Y')
datum2=$(cut -f1 file1)

Ansonsten sieht alles richtig aus. Wie sieht file1 aus?

Gruss, Phorus
 
Hallo
Ich würde beim cut mal den Feldtrenner (-d) mit angeben.
Wie Phorus schon sagte, ist natürlich interessant wie file1 daherkommt.
Im Falle von Space würde das also bei cut so aussehen:
Auch hier wieder die Backticks oder eben $(command), was übersichtlicher ist.
datum2=$(cut -d" " -f1 file1)
Da du beidesmal die Backticks bzw $(..) vergessen hast, sind beide Variablen leer und somit lätürnich gleich. ;)
Gruß Wolfgang
PS Kleiner Tipp, lass dir die Variablen im Zweifelsfall immer ausgeben.
 
Ja Danke ! jetzt klappt es.

Aber vielleicht könnt ihr mir ja noch dabei helfen.
Möchte aus einer Datei (quelle.txt) aus der dritte Zeile bestimmte Zeichen auslesen und anschließend mit einer IF abfrage überprüfen.


##
Aufbau quelle.txt

Das ist eine Testquelldatei
Ich hoffe es ist ok für Euch
ich möchte nun dieses Datum auslesen 13.10.2005 und nichts anderes.
##

13.10.2005
möchte ich nun jetzt haben und weiter in einer IF-Abfrage verarbeiten.

mit grep kann ich ja nur immer komplette Zeilen auslesen.

Danke
Blue
 
ninguno schrieb:
head -n3 quelle.txt|tail -n1|cut -d" " -f7

Hallo
Das funktioniert aber nur, wenn es der string immer unverändert ist.
Ein Versuch mal nicht mit Perl ;)
Code:
DATUM=$(sed -ne '3!d' -e'~s/^.*\([0-9][0-9]\.[0-9][0-9]\.[0-9][0-9][0-9][0-9]\).*/\1/gp' test.txt)
echo $DATUM;
Das findet auf Zeile 3 das erste Datum der Form DD.MM.YYYY, wobei die Anzahl der Wörter die davor oder dahinter stehen egal sind.
Ich habe diese Form aus Kompatilitätsgründen gewählt, da es zu viele verschiedene sed gibt.
Mit perl geht das näturlich auch ;) aber das überlass ich jemand Anderen :D
HTH
Gruß Wolfgang

EDIT

Ich sehe gerade, dass
egrep (GNU grep) 2.5.1
Das auch kann:
Also Variante 2:
DAT=$(head -n3 test.txt |tail -1| egrep -o '([0-9][0-9]\.){2}[0-9]{4}')
 
Zuletzt bearbeitet:
Das funktioniert aber nur, wenn es der string immer unverändert ist.
das ist schon klar, aber ich kann schliesslich nur von den daten ausgehen, die der op uns zur verfügung stellt.
übrigens funktioniert deine lösung auch nur wenn's immer in der 3. zeile steht :D
 
@ninguno
Schon klar, ich wollte auch nur darauf hinweisen, falls die Daten nur fiktiv waren
und real eventuell anders aussehen.
Die dritte Zeile war aber klar gefordert, lässt sich auch leicht anpassen.
Aus der Gesamten Datei das erste zweite oder neunte Datum rausfischen ist auch kein Problem.

Gruß Wolfgang
 
Vielen, vielen Dank Euch beiden, das klappt super !

Ein gutes, schnelles Forum :-)

Ich komme wieder....
Blue
 

Ähnliche Themen

Inhalt einer Variablen aus Batch an Shellscript übergeben

mittels if abfrage datei nach variabelnwert durchsuchen

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Last mit etc/passwd anzeigen lassen

Shell Datum vergleichen nicht möglich (date als String)

Zurück
Oben