Notepad++ 查找&;替换为跨多个文件的增量

Notepad++ 查找&;替换为跨多个文件的增量,notepad++,gawk,Notepad++,Gawk,我有数百个html文件,每个文件都有一个术语“问题1”,在同一个文件中的两个不同位置。我的目标是在文件中增加问题编号 例如: 这些文件是A1,A2,A3。。。文件A1在文件中的两个地方给出了“问题1”。此文件不需要更改 文件A2在文件中的两个位置再次给出了“问题1”。需要更改此文件,以便在两个位置将“问题1”自动递增为“问题2”,依此类推所有文件 如何在Gawk脚本中执行此操作?我喜欢记事本++,但我不是技术(程序员)用户。我需要一种相对简单的方法来执行这项任务,这种方法很容易重复和及时。下面是

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

例如: 这些文件是A1,A2,A3。。。文件A1在文件中的两个地方给出了“问题1”。此文件不需要更改

文件A2在文件中的两个位置再次给出了“问题1”。需要更改此文件,以便在两个位置将“问题1”自动递增为“问题2”,依此类推所有文件


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

下面是一个GNU awk脚本,它可能会帮助您

script.awk

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

  • awk脚本中所需的全部内容是:

    @load "inplace"
    { sub(/\<Issue 1\>/,"Issue " ARGIND); print}
    
    @load“就地”
    {sub(/\/,“发行”argid);print}
    

    然后将其命名为
    awk-f script A*
    或Windows上的任何语法。不过,请先获取gawk的最新版本-您的版本已经过时5年多,并且缺少大量有用的功能。还认真考虑CygWin和运行GAWK和所有其他UNIX工具从那里-这将使您的生活变得更容易! 文件名中是否确实存在编号(如
    A1、A2、…
    ),或者编号的文件名只是一个示例?你说的是增量,而不是从文件名派生。实际的文件名是pa501.html、pa502.html、pa503.html……我无论如何都不想更改文件名。我只想编辑文件中的内容。
    gawk
    标记的访问人数远远少于
    awk
    标记的访问次数,因此为了让更多人查看您的问题以帮助您,请使用
    awk
    标记您的awk问题,如果您愿意,可以选择添加
    gawk
    标记,并在问题中说明您正在使用gawk。脚本正在生成错误。它说:awk:script.awk:5:fatal:expression for'>'重定向具有空字符串值您是否重新定义了
    outFile
    ?如果在
    BEGINFILE
    操作中添加为最后一行,则
    print outFile
    会说什么?另外:当添加到
    print>outFile
    之前时,它会说什么?我不明白您想说什么,因为我不知道awk编程。我所做的两个改变是:1。我在“C:\Program Files\GnuWin32\bin”目录中添加了script.awk。2.我在c:\中创建了一个名为“fileDir”的目录,并将我的文件复制到此目录。3.然后,我打开命令提示符并切换到目录:“C:\ProgramFiles\GnuWin32\bin”。我从这里运行您给定的命令。我会将脚本放入与html文件相同的目录中,然后从那里运行命令。我不知道你的系统里发生了什么。我假设它与html文件和当前目录的路径有关。将所有内容放在同一目录中,然后切换到该目录并从该目录运行脚本。
    {print gensub(/(Issue)1\>/,“\\1”argid,“g”)>(FILENAME.mod”)}
    是实现该脚本功能所需的全部内容。