我需要使用bash脚本将数字修改为文件
我想删除包含dalvik.vm.heapsize=256
的行,并将其替换为包含dalvik.vm.heapsize=512
的新行。我不知道行号,256是ipotetic值。我如何构建一个执行此操作的脚本?
答案 0 :(得分: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更灵活。我更喜欢用它来完成更复杂的任务。但是,对于Perl,没有sed
-i
选项这么简单的方法;但你可以简单地使用shell重定向,例如:
cat build.prop | \
perl -n -e 's/^([\t\s]*dalvik.vm.heapsize=)\d+/${1}512/; print' > build.prop