【问题标题】:perl replace with regex deletes complete file contentperl 用正则表达式替换删除完整的文件内容
【发布时间】:2022-08-19 22:28:21
【问题描述】:

我正在尝试为我的自动构建过程替换统一文件中的数字。 我尝试了不同版本的正则表达式以及命令,但似乎没有一个能正常工作。 我目前有

perl -0777 -ne \'print \"${1}0\" while /(WebGLSupport\\s+m_APIs:\\s[a-b0-9]{8,16}\\s+m_Automatic\\:\\s)1/sg\'  ../../CityBotVRSimWebGL/HandTracking/ProjectSettings/ProjectSettings.asset

正确打印并替换 \'1\'

WebGLSupport
    m_APIs: 0b000000
    m_Automatic: 0

而不是原来的

<...>
  - m_BuildTarget: WebGLSupport
    m_APIs: 0b000000
    m_Automatic: 1
<...>

但是,当我尝试进行实际替换时,文件的完整内容被删除(不是文件本身)

perl -0777 -i -ne \'s/(WebGLSupport\\s+m_APIs:\\s[a-b0-9]{8,16}\\s+m_Automatic\\:\\s)1/${1}0/\'  ../../CityBotVRSimWebGL/HandTracking/ProjectSettings/ProjectSettings.asset

谁能告诉我出了什么问题。我真的很困惑,因为正则表达式似乎是正确的。谢谢!

    标签: perl


    【解决方案1】:

    -i 开关表示您正在进行就地编辑。但是,您使用-n 开关来处理每一行但不输出任何内容。也许您想要输出$_(当前“行”)的值的-p

    【讨论】:

      猜你喜欢
      • 2021-08-18
      • 2014-10-28
      • 2015-06-30
      • 2016-12-20
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多