在多个文件中查找和替换为增量

Find & replace with increment across multiple files

我有数百个 html 文件,每个文件都在同一文件的两个不同位置给出了术语 "Issue 1"。我的目标是增加文件中的问题编号。

例如: 文件是 A1、A2、A3...等。文件 A1 在文件的两个位置给出了 "Issue 1"。该文件不需要更改。

文件 A2 再次在文件的两个位置给出了 "Issue 1"。需要更改此文件,以便 "Issue 1" 在两个位置自动递增到 "Issue 2",所有文件依此类推。

如何在 Gawk 脚本中执行此操作?我喜欢 Notepad++,但我不是技术(程序员)用户。我需要一种相对简单的方法来执行此任务,该方法易于重复且及时。

这是一个可能对您有所帮助的 GNU awk 脚本。

script.awk

FNR==1    { fileCount++
            outFile = FILENAME ".mod"
          }
          { [=10=] = gensub(/Issue 1([^0-9]|$)/, "Issue " fileCount "\1", "g")
            print > outFile
          }
  1. 备份 原始文件的副本
  2. 运行 脚本如下:awk -f script.awk pa*.html
  3. 确保生成的pa*.html.mod文件是正确的结果
    1. 只有这样:将 mod 文件重命名回原始文件名

awk 脚本中您只需要:

@load "inplace"
{ sub(/\<Issue 1\>/,"Issue " ARGIND); print}

然后将其称为 awk -f script A* 或 Windows 上的任何语法。不过,首先获取当前版本的 gawk - 你的版本已经超过 5 年了,并且缺少大量有用的功能。还要认真考虑从那里获取 cygwin 和 运行 gawk 以及所有其他 UNIX 工具 - 这将使您的生活变得更加轻松!