Päivämäärän jäsennys merkkijonosta

Bash:
Päivämäärän jäsennys merkkijonosta

Miten:

Bash itse on melko rajallinen suorissa päivämäärän jäsentämiskyvyissä ja se nojaa usein ulkoisiin työkaluihin, kuten date ja awk, monimutkaisempiin manipulaatioihin. Tässä on, miten voit jäsentää tietyn formaatin ja sitten käyttää sitä date-komennon kanssa, jotta voit muuntaa sen tai suorittaa operaatioita.

Esimerkki 1: Poimi päivämäärämerkkijono ja muunna se toiseen formaattiin.

Oletetaan, että sinulla on päivämäärä muodossa vvvv-kk-pp ja haluat muuntaa sen muotoon pp-kk-vvvv.

alkuperainen_paivamaara="2023-04-01"
muotoiltu_paivamaara=$(date -d $alkuperainen_paivamaara '+%d-%m-%Y')

echo $muotoiltu_paivamaara

Esimerkkitulo:

01-04-2023

Tämä käyttää date-komentoa -d-vaihtoehdon kanssa määrittämään syöttöpäivämäärämerkkijonon, ja +%d-%m-%Y muotoilemaan tulosteen.

Esimerkki 2: Käyttämällä awk:ia jäsentämään päivämäärä rakenteellisesta tekstirivistä ja muuntamaan se.

Oletetaan, että sinulla on lokitiedostorivi:

2023-04-01 12:00:00 Käyttäjä kirjautui sisään

Voit poimia ja muuntaa päivämääräosan käyttämällä awk:ia ja date:a.

loki_rivi="2023-04-01 12:00:00 Käyttäjä kirjautui sisään"
paivamaara_osa=$(echo $loki_rivi | awk '{print $1}')
muotoiltu_paivamaara=$(date -d $paivamaara_osa "+%A, %B %d, %Y")

echo $muotoiltu_paivamaara

Esimerkkitulo:

Lauantai, huhtikuu 01, 2023

Tässä esimerkissä käytetään awk:ia jakamaan lokirivi ja poimimaan päivämääräosa ($1 edustaa ensimmäistä välilyönnein eroteltua kenttää), ja sitten date:a käytetään sen uudelleenmuotoiluun.

Kolmannen osapuolen työkalujen käyttö

Monimutkaisempia jäsentämisiä tai monenlaisten päivämäärämuotojen käsittelyä varten kolmannen osapuolen työkalut, kuten dateutils, voivat olla erittäin käteviä.

Esimerkki dateutils-ohjelmalla:

Oletetaan, että sinulla on päivämäärämerkkijono ei-standardissa muodossa, esimerkiksi, huhtikuu 01, 2023.

alkuperainen_paivamaara="huhtikuu 01, 2023"
muotoiltu_paivamaara=$(dateconv -i "%B %d, %Y" -f "%Y-%m-%d" <<< $alkuperainen_paivamaara)

echo $muotoiltu_paivamaara

Esimerkkitulo:

2023-04-01

Tämä komento käyttää dateutils-pakettiin kuuluvaa dateconv:ia, määrittäen syöttömuodon -i-vaihtoehdolla ja halutun tulostusmuodon -f-vaihtoehdolla. dateutils tukee laajaa valikoimaa päivämäärä- ja aikamuotoja, tehden siitä erittäin monipuolisen välineen päivämäärän jäsentämistehtäviin Bash-skripteissä.