Итак, на всякий случай , я хочу изменить команду
sed
только для изменения значения между двумя одинарными кавычками после запятой (,
) в строке с'remoteUrl'
.
sed "s/\('remoteUrl',.*'\).*\('\)/\1staging.zazzercode.com\2/"
s
- поиск, замена и замена.
\ (
и \)
в «старой» строке (указанной первой) идентифицируют подстроки.
\ 1
и \ 2
(и \ n
, до \ 9
) копируют эти подстроки
в заменяющую строку.
С помощью 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...
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
в строке.