You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Notepad++逐个用另一文件内容替换指定匹配项

解决方案:按顺序替换文件中的匹配项为另一个文件的对应行

我来给你两个实用的命令行方案,刚好能解决你这个“逐次替换对应内容”的需求,都是Linux/macOS下就能直接用的工具~

方法一:用awk(推荐,支持正则匹配,效率高)

awk是处理这种文本对应替换的绝佳工具,它可以一次性读取两个文件,然后按顺序完成替换:

awk 'NR==FNR {repl[NR]=$0; next} {while (match($0, /你的目标匹配模式/)) {count++; $0=substr($0,1,RSTART-1) repl[count] substr($0,RSTART+RLENGTH)}}1' fileB fileA > result.txt

命令解释:

  • NR==FNR:这是awk判断当前处理的是第一个输入文件(也就是fileB)的写法,此时我们把fileB的每一行内容存入数组repl,下标就是行号(比如repl[1]是fileB第一行,repl[2]是第二行)。next会跳过后续逻辑,直接读取下一行。
  • 处理fileA时,我们循环查找每一行中的目标模式:每找到一次,计数器count加1,然后用substr把匹配到的部分替换成repl[count]对应的内容。
  • 最后的1是awk的简写,代表“打印当前处理后的行”。
  • 结果会输出到result.txt,你可以先打开这个文件验证结果,确认没问题后再替换原文件。

注意事项:

  • 把命令里的/你的目标匹配模式/换成你实际要搜索的内容,如果模式里包含正则特殊字符(比如.、*、[、/),记得用反斜杠转义。比如要匹配{{VAR}},就写成/\{\{VAR\}\}/。
  • 确保fileB的行数和fileA中模式的匹配次数一致,不然多余的匹配项会被替换成空字符串。

方法二:用Bash循环+sed(适合简单固定字符串替换)

如果你的匹配模式是固定的字符串(不需要正则),也可以用bash循环配合sed来实现:

# 先备份原文件,避免误操作
cp fileA fileA.bak

count=1
while IFS= read -r replace_str; do
    # 替换第count次出现的目标模式
    sed -i "${count}s/你的固定匹配字符串/$replace_str/" fileA
    count=$((count+1))
done < fileB

命令解释:

  • 首先备份fileA到fileA.bak,防止替换出错无法恢复。
  • 逐行读取fileB的内容,每次用sed替换fileA中第count次出现的目标字符串,然后计数器加1。
  • sed的${count}s/.../.../语法表示只替换第count次匹配到的内容。

缺点:

如果fileA很大,这个方法会多次调用sed,效率不如awk高,所以更适合小文件场景。


内容的提问来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:08:44