Дата BusyBox :получить дату из Интернета без ntpdate

Чтобы удалить все до (и включая )последнее :в каждой строке, использовать

sed 's/.*://'

Например,

your_command | sed 's/.*://'

Если ваши данные (часть после метки, которую вы хотите сохранить )может содержать :, вы хотите удалить все до первого:в строке:

sed 's/^[^:]://'

Если у вас есть пробел после двоеточия (, как показано в вашем примере )и вы хотите удалить это тоже, просто добавьте пробел после двоеточия в команде:

sed 's/.*: //'

или

sed 's/^[^:]: //'
0
11.03.2021, 17:11
1 ответ

В конце концов я проанализировал строку времени из Google, чтобы поместить ее в busybox dateудобный формат(YYYY-mm-dd HH:MM:SS). Надеюсь, кто-то найдет это полезным в будущем.

#!/bin/sh

monthnumber() {
    month=$1
    months="JanFebMarAprMayJunJulAugSepOctNovDec"
    tmp=${months%%$month*}
    month=${#tmp}
    monthnumber=$((month/3+1))
    printf "%02d\n" $monthnumber
}

G_DATE="$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-6)"
G_SPLIT=($(echo $G_DATE | tr " "))

BB_DATE="${G_SPLIT[2]}-$(monthnumber ${G_SPLIT[1]})-${G_SPLIT[0]} ${G_SPLIT[3]}"

date -s "$BB_DATE"

monthnumber()функция взята изhttps://stackoverflow.com/a/41385862/9815377

0
18.03.2021, 22:26

Теги

Похожие вопросы