Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Bash добавление/обновление версии файла  (Прочитано 999 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DarkWay

  • Автор темы
  • Участник
  • *
  • Сообщений: 106
    • Просмотр профиля
Доброго времени суток. 

Ребята, столкнулся с одной задачкой. Необходим скрипт на баше, который бы при обработке текстового файла добавлял вначале него следующую строчку:

/* COMPILE_VERSION: 1.0.0 */

Но если подобная строчка существует, то просто менял версию на +1:

/* COMPILE_VERSION: 1.0.1 */

Соответственно при каждой обработке, добавляет по +1 в версию файла.

Задачка сама по себе довольно простая, однако дело осложняется тем, что работаю с другим языком и с башем пока знаком плохо. Буду признателен, если хотя бы примерно покажите варианты, как это можно реализовать.

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Bash добавление/обновление версии файла
« Ответ #1 : 30 Марта 2012, 15:01:15 »
1) проверка существования строки: grep
2) вставка строки вначале: sed|awk+insert+line (гуглится легко)
3) редактирование строки (выковыривание текущего номера версии): grep|awk|bash

Если сильно заморочиться, то думаю, можно и одним awk обойтись.

andrey_p

  • Гость
Re: Bash добавление/обновление версии файла
« Ответ #2 : 30 Марта 2012, 15:40:19 »
Общая схема:
for f in *; do
  # ахтунг - проверка в любой строке
  if grep -q COMPILE_VERSION "$f"; then
    echo increment version
  else
    echo add string
  fi
done

Вставлять удобно с sed (в первую строку):
sed  -i '1a\                                                                   
/* COMPILE_VERSION: 1.0.0 */' FILE
А увеличивать с Perl (в любой строке):
perl -i -pe 's/(COMPILE_VERSION: \d+\.\d+\.)(\d)/$1 . ($2+1)/e' FILE
Рабочий скрипт должен зависеть от номера строки (относительного, абсолютного, диапазона, но хоть что-нибудь привязывающее должно быть), чтоб не вставлял куда-попало, и не проверял по всему файлу.


Оффлайн DarkWay

  • Автор темы
  • Участник
  • *
  • Сообщений: 106
    • Просмотр профиля
Re: Bash добавление/обновление версии файла
« Ответ #3 : 30 Марта 2012, 19:48:55 »
Работает, спасибо.

UPD: вместо перла попробую питоном.

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Bash добавление/обновление версии файла
« Ответ #4 : 09 Апреля 2012, 14:25:26 »
Закрыто.

 

Страница сгенерирована за 0.061 секунд. Запросов: 25.