【问题标题】:Recursive find and replace on Command Line with Special Characters使用特殊字符在命令行上递归查找和替换
【发布时间】:2016-03-23 23:45:28
【问题描述】:

我试图递归地遍历文件夹结构并更新一堆 pom.xml 文件。我只想更新我的版本号,所以我尽量做到准确。我要改变的是:

<version>5.1.1</version>

<version>5.2.0</version>

我试图包含版本标签,以确保我不会替换任何可能出现相同版本号的 cmets 或依赖项。

我认为像 ' 或 /' 这样的字符会引起问题。

我对在命令行上转义这样的字符没有太多经验,因此不胜感激。

我使用的是 Windows 7 机器,但安装了 Git Bash 和 Cygwin。

【问题讨论】:

    标签: bash shell replace command-line escaping


    【解决方案1】:

    我要么为此使用一个名为“fart.exe”的工具——如果替换很简单的话。 https://sourceforge.net/projects/fart-it/

    如果我需要正则表达式,我会使用 power shell。 这是一个示例(批处理文件和 power-shell 的混合),它替换了所有 XML 文件中的版本字符串:

    [替换.bat]:

    SET version=1.2.3
    for /r %%x in (*.xml) do (  
        powershell -Command "& {(Get-Content '%%x') | Foreach-Object { $_ -replace '(''version''\s?\:\s?'')(\d*\.\d*\.\d*)('')', '${1}%version%${3}' } | Set-Content '%%x'}"
    )
    

    【讨论】:

      猜你喜欢
      • 2013-01-28
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 2020-08-26
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      相关资源
      最近更新 更多