Wie erhalte ich in einer Unix-Shell das Datum von gestern in eine Variable?
Habe ich ein shell-Skript, das das folgende tut, um zu speichern das aktuelle Tages-Datum in eine variable 'dt':
date "+%a %d/%m/%Y" | read dt
echo ${dt}
Wie würde ich mich über erste yesterdays Datum in eine variable?
Im Grunde, was ich versuche zu erreichen ist die Verwendung von grep zu ziehen, alle von der gestrigen Zeilen von der log-Datei, da jede Zeile im Protokoll enthält das Datum im "Mon 01/02/2010" - format.
Vielen Dank
InformationsquelleAutor der Frage Chris | 2010-08-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Perl zur Verfügung (und Ihre
date
nicht haben nette features wieyesterday
), die Sie verwenden können:InformationsquelleAutor der Antwort paxdiablo
InformationsquelleAutor der Antwort polemon
Unter Linux, die Sie verwenden können,
InformationsquelleAutor der Antwort z1x2
Können Sie verwenden, GNU date-Befehl wie unten gezeigt
date --date='gestern'
date --date='1 Tag'
date --date='10 Wochen'
date --date='10 Wochen'
date --date='10 Monat'
date --date='10 Jahr'
date --date='morgen'
date --date='1 Tag'
date --date='10 Tage'
date --date='10 Wochen'
date --date='10 Monate'
date --date='10 Jahre'
InformationsquelleAutor der Antwort ramit girdhar
Wenn Sie auf einem Mac oder BSD oder etwas anderes ohne den --Datum option, die Sie verwenden können:
Update: oder vielleicht...
InformationsquelleAutor der Antwort DigitalRoss
Habe ich shell-Skript unter Linux und folgenden code bei mir funktioniert:
InformationsquelleAutor der Antwort jujuBee
Müssen Sie mindestens 2 Optionen
Perl:
Installieren, GNU date (es ist in der
sh_utils
Paket, wenn ich mich richtig erinnere)Nicht sicher, ob das funktioniert, aber Sie können möglicherweise verwenden Sie einen negativen Zeitzone. Wenn Sie eine Zeitzone, die 24 Stunden vor Ihrer aktuellen Zeitzone als Sie einfach
date
.InformationsquelleAutor der Antwort Wolph
Hier ist ein ksh-Skript berechnen Sie die Vorherige Datum des ersten Arguments, getestet auf Solaris 10.
Tests
InformationsquelleAutor der Antwort Jose Manuel Gomez Alvarez
Versuchen Sie die folgende Methode:
Es funktioniert sowohl auf Linux und OSX.
InformationsquelleAutor der Antwort kenorb
Danke für die Hilfe an alle, aber da bin ich auf HP-UX - (immerhin: je mehr Sie bezahlen, desto weniger features,...), die ich hatte, zu greifen, zu perl:
InformationsquelleAutor der Antwort Chris
Wenn Ihr HP-UX installation von Tcl installiert haben, werden Sie vielleicht feststellen, Datums-Arithmetik sehr gut lesbar (leider Tcl-shell nicht über eine schöne "-e" option, wie in perl):
Diese kümmert sich um alle die Sommerzeit stört.
InformationsquelleAutor der Antwort glenn jackman
Wenn Sie nicht über eine version von date unterstützt --gestern und Sie nicht verwenden möchten, perl, können Sie mit diesem handlichen ksh-Skript von mir. Standardmäßig gibt es das gestrige Datum, aber können Sie füttern es eine Zahl ist, und es sagt Ihnen das Datum, die viele Tage in die Vergangenheit. Es beginnt, ein wenig langsamer, wenn Sie schauen weit in die Vergangenheit. 100,000 Tagen war es 1/30/1738, obwohl mein system nahm 28 Sekunden, um das herauszufinden.
InformationsquelleAutor der Antwort Ken Beer
ksh93:
oder:
Die erste läuft in demselben Prozess, das zweite in einer subshell.
InformationsquelleAutor der Antwort danlei
Wenn Sie Zugang zu
python
dies ist ein Helfer, der dieyyyy-mm-dd
Datum-Wert für jede beliebigen
Tagen:InformationsquelleAutor der Antwort wuster
Erhalten, die Sie gestern in AIX und die TZ variable wieder auf original
InformationsquelleAutor der Antwort santymano
Obwohl alle gute Antworten, leider keiner von Ihnen arbeitete für mich. Also ich hatte, etwas zu schreiben, alte Schule. ( Ich war auf bare minimale Linux-OS )
Können Sie verbinden diese mit dem Datum der üblichen Formatierung. ZB.
Erklärung :
Nehmen Sie Datum, input im Sinne von epoc Sekunden ( option-d ), aus denen Sie hätten subtrahiert einen Tag äquivalent Sekunden. Dies gibt das Datum genau einen Tag zurück.
InformationsquelleAutor der Antwort Gautam
Für Hp-UX nur unter Befehl funktionierte für mich:
TZ=aaa24 date +%Y%m%d
können Sie es verwenden, wie :
ydate=`TZ=aaa24 date +%Y%m%d`
echo $ydate
InformationsquelleAutor der Antwort Anvesh