Bash:从脚本中查找并替换文本

时间:2016-10-31 23:06:24

标签: android linux bash terminal

我需要使用bash脚本将数字修改为文件

我想删除包含dalvik.vm.heapsize=256的行,并将其替换为包含dalvik.vm.heapsize=512的新行。我不知道行号,256是ipotetic值。我如何构建一个执行此操作的脚本?

1 个答案:

答案 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