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_datumBeispielausgabe:
01-04-2023Dies 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 eingeloggtSie 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_datumBeispielausgabe:
Samstag, April 01, 2023Dieses 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_datumBeispielausgabe:
2023-04-01Dieser 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.