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

问题描述 投票:-2回答:1

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

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

android linux bash terminal
1个回答
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用于Perl的-i选项这样简单的方法;但你可以简单地使用shell重定向,例如:

cat build.prop | \
  perl -n -e 's/^([\t\s]*dalvik.vm.heapsize=)\d+/${1}512/; print' > build.prop
© www.soinside.com 2019 - 2024. All rights reserved.