Измените строку, если есть новая информация, иначе ничего - PullRequest
0 голосов
/ 27 мая 2020

У меня есть файл с полным маршрутом файлов и отметками времени.

xxxx/view/css/animate.css/3.1.1/animate.min.css: 1494509091
xxxx/view/fonts/cinzel/fonts.css: 1494509091
xxxx/view/fonts/garamondcondot-book/fonts.css: 1494509092
xxxx/view/fonts/gotham-narrow/fonts.css: 1494509092
xxxx/view/fonts/gotham/fonts.css: 1494509092
xxxx/view/fonts/greatvibes/fonts.css: 1494509092
xxxx/view/fonts/indie-flower/fonts.css: 1494509092
xxxx/view/fonts/katibeh/fonts.css: 1494509092
xxxx/view/fonts/lobster-two/fonts.css: 1494509092
xxxx/view/fonts/museo/fonts.css: 1494509092
xxxx/view/fonts/myriad-pro/fonts.css: 1494509092

Задача - проверить дату последнего изменения каждого файла с помощью журнала git. Это хорошо и работает с этой командой:

sed -E 's|(.*): .*|echo \1: $(git log -1 --pretty="format:%ct" \1)|e' file.yml

Это очень хорошо и полезно, но я обнаружил проблему. Поскольку существует более 500 файловых маршрутов, у меня был файл, о котором у меня нет информации в журнале git. И проблема в том, что эти файлы я не могу получить обратно из команды sed. Правильный способ будет, если есть новая информация о временной метке из git log change, иначе ничего не делать, поэтому оставьте старую.

Пример: Если у меня нет информации в git log i получил эту информацию об ошибке:

fatal: ambiguous argument 'xxx/compiled/css/*FILENAME*': unknown revision or path not in the working tree.

1 Ответ

0 голосов
/ 15 июня 2020

Хорошо, я решил с помощью sed:

sed -i.bkp "s|$key: .*|$key: $new|g" file.yml
...