Как я обновляю даты (на 30 дней) в файлах, идущих в то определенное местоположение в Unix?

Итак, на всякий случай , я хочу изменить команду sed только для изменения значения между двумя одинарными кавычками после запятой (, ) в строке с 'remoteUrl' .

sed "s/\('remoteUrl',.*'\).*\('\)/\1staging.zazzercode.com\2/"

s - поиск, замена и замена. \ ( и \) в «старой» строке (указанной первой) идентифицируют подстроки. \ 1 и \ 2 \ n , до \ 9 ) копируют эти подстроки в заменяющую строку.

1
11.03.2015, 14:20
2 ответа

С помощью perl и модуля Дата::Manip можно сделать:

 perl -MDate::Manip -pi -e 's|^Event.*?"\K\d{4}/\d\d/\d\d|
   UnixDate(DateCalc("$&", "30 days later"), "%Y/%m/%d")|e' file1 file2...
1
27.01.2020, 23:50
awk '
  /^Event:/{
    d=substr($0,match($0,"[0-9]{4}(/[0-9]{2}){2}"),RLENGTH)
    "date +\"%Y/%m/%d\" -d \""d" 30 days\""|getline ds
    sub(d,ds)
    }
  1' file

Для строк, которые начинаются с Событие: найти substr ing соответствует формат даты и поместите в переменную d . Затем используйте команду system date , чтобы установить переменную ds как дату, превышающую d в течение 30 дней и sub stitute d по ds в строке.

0
27.01.2020, 23:50

Теги

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