在多个文件中查找和替换为增量
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
}
- 备份 原始文件的副本
- 运行 脚本如下:
awk -f script.awk pa*.html
- 确保生成的
pa*.html.mod
文件是正确的结果
- 只有这样:将 mod 文件重命名回原始文件名
awk 脚本中您只需要:
@load "inplace"
{ sub(/\<Issue 1\>/,"Issue " ARGIND); print}
然后将其称为 awk -f script A*
或 Windows 上的任何语法。不过,首先获取当前版本的 gawk - 你的版本已经超过 5 年了,并且缺少大量有用的功能。还要认真考虑从那里获取 cygwin 和 运行 gawk 以及所有其他 UNIX 工具 - 这将使您的生活变得更加轻松!
我有数百个 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
}
- 备份 原始文件的副本
- 运行 脚本如下:
awk -f script.awk pa*.html
- 确保生成的
pa*.html.mod
文件是正确的结果- 只有这样:将 mod 文件重命名回原始文件名
awk 脚本中您只需要:
@load "inplace"
{ sub(/\<Issue 1\>/,"Issue " ARGIND); print}
然后将其称为 awk -f script A*
或 Windows 上的任何语法。不过,首先获取当前版本的 gawk - 你的版本已经超过 5 年了,并且缺少大量有用的功能。还要认真考虑从那里获取 cygwin 和 运行 gawk 以及所有其他 UNIX 工具 - 这将使您的生活变得更加轻松!