Bash:
Analysering av en dato fra en streng
Hvordan:
Bash i seg selv er ganske begrenset i direkte datotolkningsmuligheter, ofte avhenger den av eksterne verktøy som date og awk for mer sofistikert manipulasjon. Her er hvordan du kan tolke et spesifikt format og deretter bruke det med date-kommandoen for å konvertere det eller utføre operasjoner.
Eksempel 1: Uttrække en datostreng og konvertere den til et annet format.
Anta at du har en dato i formatet åååå-mm-dd og du ønsker å konvertere den til dd-mm-åååå.
original_dato="2023-04-01"
formatert_dato=$(date -d $original_dato '+%d-%m-%Y')
echo $formatert_datoEksempel på utdata:
01-04-2023Dette bruker date-kommandoen med -d-alternativet for å spesifisere inndato-strengen, og +%d-%m-%Y for å formatere utdata.
Eksempel 2: Bruke awk for å tolke en dato fra en strukturert tekstlinje og konvertere den.
Anta at du har en loggfillinje:
2023-04-01 12:00:00 Bruker logget innDu kan ekstrahere og konvertere datodelen ved å bruke awk og date.
logg_linje="2023-04-01 12:00:00 Bruker logget inn"
datodel=$(echo $logg_linje | awk '{print $1}')
formatert_dato=$(date -d $datodel "+%A, %B %d, %Y")
echo $formatert_datoEksempel på utdata:
Lørdag, april 01, 2023Dette eksemplet bruker awk for å splitte logglinjen og ekstrahere datodelen ($1 representerer det første mellomrom-delt feltet), og deretter brukes date til å omformatere den.
Bruk av tredjepartsverktøy
For mer kompleks tolkning eller når man har å gjøre med en lang rekke datofortmatter, kan tredjepartsverktøy som dateutils være veldig nyttig.
Eksempel med dateutils:
Anta at du har en datostreng i et ikke-standard format, for eksempel, April 01, 2023.
original_dato="April 01, 2023"
formatert_dato=$(dateconv -i "%B %d, %Y" -f "%Y-%m-%d" <<< $original_dato)
echo $formatert_datoEksempel på utdata:
2023-04-01Denne kommandoen bruker dateconv fra dateutils, og spesifiserer inndataformatet med -i og ønsket utdataformat med -f. dateutils støtter et stort utvalg av dato- og tidsformater, noe som gjør det svært allsidig for dato-tolkningsoppgaver i Bash-skript.