Заменить строку файла - PullRequest
0 голосов
/ 19 сентября 2011

Я пытаюсь сделать скрипт увеличения версии. Итак, у меня есть файл manifest.json, в котором есть предопределенные строки (например, 45 строк).

$1 параметр имя файла
$2 параметр - это новые номера версий (например, 0.3.5.29)

Ввод похож на $ BumpVersion.sh manifest.json 0.15.2.34

Мне нужно заменить, например "version": "0.2.0.1", с "version": "0.2.1.0",

- РЕДАКТИРОВАТЬ -
Ох, и я забыл, версия не всегда 0.2.1.5, это может быть 0.3

Я знаю номер строки и ее содержание, мне просто нужно заменить цифры. Я делаю это в Git-Bash для Windows, и он должен работать в Linux и Unix, если это возможно.

(я никогда не работал со скриптом bash, но он мне нужен для межплатформенной поддержки)

Ответы [ 2 ]

2 голосов
/ 19 сентября 2011

Должен быть простой sed скрипт.(Я предполагаю, что ваши цитаты необходимы):

file="VERSION.json"
new_version="0.2.1.0"
sed -i "s/\"version:\" \"[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\"/\"version:\" \"$new_version\"/" $file

Однако мне это не нравится.Вместо этого вы должны иметь шаблон и переписать шаблон, заменив известную строку, например %VERSION%.Например, у вас есть файл с именем VERSION.json.template :

file="version.json.template"
new_version="1.2.2.1"
sed "s/%VERSION%/$new_version/" > "${file%.template}"

Это более чистый и простой в реализации.

${file%.template} удаляет .template суффикс из имени файла.Если вы используете систему контроля версий, вы не сохраняете новую версию файла version.json с каждой компиляцией.Вместо этого вы просто делаете его частью своей стандартной процедуры сборки, которая должна включать механизм clean для удаления ненужного файла version.json.

Если вы используете систему сборки, такую ​​как Ant, вы можете использовать его различные задачи (например, задачу копирования / фильтрации), которые будут создавать и копировать этот файл в другое место для вашей веб-страницы.

0 голосов
/ 19 сентября 2011

Ваш скрипт BumpVersion.sh может выглядеть так

#!/bin/sh
sed -i "/\(\"version\":\).*/\1 \"$2\"/" "$1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...