2016-10-31 4 views
-2

мне нужно изменить число в файл с помощью Баш скриптBash: найти и заменить текст из сценария

Я хочу, чтобы удалить строку, содержащую dalvik.vm.heapsize=256 и заменить ее на новую строку, содержащую dalvik.vm.heapsize=512. Я не знаю, номер строки и 256 - это значение для ipotetic. Как я могу создать скрипт, который выполняет это действие?

ответ

2

Используйте sed команду:

sed -i -e 's/^\(dalvik.vm.heapsize=\).*/\1512/' build.prop 

Команда ищет строку, начинающуюся с dalvik.vm.heapsize=, а затем заменяет часть после = с 512. Левую часть захватывают с использованием группы регулярных выражений, а \1 в заменяемой части (\1512) относится к этой группе. Опция -i указывает на замену на месте. Для получения дополнительной информации см. info sed.

Вот более сложный пример, принимая во внимание возможные ведущие пробелы/вкладки и сделать более строгие соответствия с помощью регулярных выражений списков:

sed -i -e 's/^\([ \t]*dalvik.vm.heapsize=\)[0-9]\+/\1512/' build.prop 

Perl является более гибким. Я предпочитаю использовать его для более сложных задач. Нет такого простого способа, как опция sed-i для Perl; но вы можете просто использовать перенаправление оболочки, например:

cat build.prop | \ 
    perl -n -e 's/^([\t\s]*dalvik.vm.heapsize=)\d+/${1}512/; print' > build.prop