代码之家  ›  专栏  ›  技术社区  ›  John

使用shell用regex替换文件中的字符串

  •  0
  • John  · 技术社区  · 6 年前

    你好,我在一个文件中有一个字符串,如下所示:

    VALUE "Git", "c464294e164b4vevre51651f14fe484a41aa03dace\0"
    

    我有一个正则表达式来匹配这个git值:

    "git",\s"(.*)"
    

    我试着用shell编写这个命令。但它不起作用:

    sed -i.bak "s/\"git\",\s\"(.*)\"/ABC/gi" myfile.rc
    

    如果我在这里尝试使用regex表达式: https://regex101.com/r/VtXAFW/4

    我对shell一无所知我在这里发现了sed

    你能帮我解决为什么这个sed命令不起作用吗?

    编辑:

    这工作得更好:perl-p-i-e“s/\”git\“,\s\”(。 )\“/x/gi”myfile.rc 但它替换了整行,我只想替换(。 )

    1 回复  |  直到 6 年前
        1
  •  0
  •   lojza    6 年前

    尝试

     perl -pe 's/(?<=VALUE \"git\", \")(.*?)(?=\")/test/gi'
    

    (?<=something) 向前看

    (?=something) 在后面看

    ? 在里面 .*? 使匹配变懒/不贪婪