【发布时间】:2016-10-31 23:06:23
【问题描述】:
我需要使用 bash 脚本将数字修改为文件
我想删除包含dalvik.vm.heapsize=256 的行并将其替换为包含dalvik.vm.heapsize=512 的新行。我不知道行号和 256 是一个 ipotetic 值。如何构建执行此操作的脚本??
【问题讨论】:
标签: android linux bash terminal
我需要使用 bash 脚本将数字修改为文件
我想删除包含dalvik.vm.heapsize=256 的行并将其替换为包含dalvik.vm.heapsize=512 的新行。我不知道行号和 256 是一个 ipotetic 值。如何构建执行此操作的脚本??
【问题讨论】:
标签: android linux bash terminal
使用sed 命令:
sed -i -e 's/^\(dalvik.vm.heapsize=\).*/\1512/' build.prop
该命令搜索以dalvik.vm.heapsize= 开头的行,然后将= 之后的部分替换为512。左侧部分是使用正则表达式组捕获的,替换部分(\1512)中的\1 指的是该组。 -i 选项指示就地替换。详情请参考info sed。
这是一个更高级的示例,它考虑了可能的前导空格/制表符,并通过正则表达式列表使匹配更加严格:
sed -i -e 's/^\([ \t]*dalvik.vm.heapsize=\)[0-9]\+/\1512/' build.prop
Perl 更灵活。我更喜欢将它用于更复杂的任务。但是,对于 Perl,没有像 sed 的 -i 选项这样简单的方法;但您可以简单地使用 shell 重定向,例如:
cat build.prop | \
perl -n -e 's/^([\t\s]*dalvik.vm.heapsize=)\d+/${1}512/; print' > build.prop
【讨论】: