2

У меня есть файл bash, и я хочу сохранить в нем текст версии (предпочтительно « echo version 1.0.1 », чтобы он автоматически распечатывал свою собственную версию при выполнении)

Я пытаюсь создать группу команд, которая обновит версию.

Пока у меня есть

grep "echo version" ~/.bashrc | cut -c 14- | sed -e 's/\./\n/g'

который извлекает "эхо-версию 1.0.1", вырезает "эхо-версию" и разделяет версию между точками

1
0
1

и я достигаю своего предела регулярных выражений, bash и google-foo, чтобы извлечь последнее число (версию патча), которое я мог увеличить и записать обратно в файл.

В основном, как мне получить этот последний номер?

Также, если есть что-то намного лучшее, чем я должен заниматься, пожалуйста, предложите.

2 ответа2

3
awk -F'[ .]' '/^echo version/ {print $1,$2,$3"."$4"."$5+1}' ~/.bashrc

Выход:

echo version 1.0.2

-F'[ .]': Разделитель (и) полей, пробел и точка

/^echo version/: поиск строки, начинающейся (^) с echo version

print $1,$2: печать строк, разделенных пробелом

$5+1: увеличить строку / значение на 1

1

Perl на помощь

$ cat file
echo version 1.0.1
$ perl -i -pe 's/echo version \d+\.\d+\.\K(\d+)/ $1+1 /e' file
$ cat file
echo version 1.0.2

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .