【问题标题】:Bash: find and replace text from a scriptBash:从脚本中查找和替换文本
【发布时间】:2016-10-31 23:06:23
【问题描述】:

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

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

【问题讨论】:

    标签: android linux bash terminal


    【解决方案1】:

    使用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
    

    【讨论】:

      猜你喜欢
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 2015-02-01
      • 2019-11-03
      • 1970-01-01
      • 2014-02-17
      • 2013-11-08
      相关资源
      最近更新 更多