Bash:
Einen Datum aus einem String analysieren
Wie geht das:
Bash selbst ist in direkten Datums-Parsing-Fähigkeiten ziemlich begrenzt und verlässt sich oft auf externe Tools wie date
und awk
für komplexere Manipulationen. Hier ist, wie Sie ein spezifisches Format parsen und es dann mit dem date
Befehl konvertieren oder Operationen ausführen können.
Beispiel 1: Extrahieren eines Datumsstrings und Konvertieren in ein anderes Format.
Nehmen wir an, Sie haben ein Datum im Format jjjj-mm-tt
und möchten es in tt-mm-jjjj
konvertieren.
original_datum="2023-04-01"
formatiertes_datum=$(date -d $original_datum '+%d-%m-%Y')
echo $formatiertes_datum
Beispielausgabe:
01-04-2023
Dies verwendet den date
Befehl mit der Option -d
, um den Eingabedatumsstring anzugeben, und +%d-%m-%Y
, um das Ausgabeformat zu formatieren.
Beispiel 2: Verwendung von awk
zum Parsen eines Datums aus einer strukturierten Textzeile und dessen Konvertierung.
Angenommen, Sie haben eine Logfile-Zeile:
2023-04-01 12:00:00 Benutzer eingeloggt
Sie können den Datumsbestandteil mithilfe von awk
und date
extrahieren und konvertieren.
log_zeile="2023-04-01 12:00:00 Benutzer eingeloggt"
datums_teil=$(echo $log_zeile | awk '{print $1}')
formatiertes_datum=$(date -d $datums_teil "+%A, %B %d, %Y")
echo $formatiertes_datum
Beispielausgabe:
Samstag, April 01, 2023
Dieses Beispiel verwendet awk
, um die Logzeile zu teilen und den Datumsbestandteil zu extrahieren ($1
stellt das erste, durch Leerzeichen getrennte Feld dar), und dann wird date
verwendet, um es neu zu formatieren.
Verwendung von Drittanbieter-Tools
Für komplexere Parsing-Aufgaben oder wenn man es mit einer Vielzahl von Datumsformaten zu tun hat, können Drittanbieter-Tools wie dateutils
sehr praktisch sein.
Beispiel mit dateutils
:
Angenommen, Sie haben einen Datumsstring in einem nicht standardisierten Format, zum Beispiel April 01, 2023
.
original_datum="April 01, 2023"
formatiertes_datum=$(dateconv -i "%B %d, %Y" -f "%Y-%m-%d" <<< $original_datum)
echo $formatiertes_datum
Beispielausgabe:
2023-04-01
Dieser Befehl verwendet dateconv
von dateutils
, wobei das Eingabeformat mit -i
und das gewünschte Ausgabeformat mit -f
angegeben wird. dateutils
unterstützt eine große Bandbreite an Datums- und Zeitformaten, was es sehr vielseitig für Datums-Parsing-Aufgaben in Bash-Skripten macht.