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

如何匹配两个文本文件内容,完成单词查找替换并添加连字符拆分格式

解决方案

awk完全支持双文件比对替换的需求,无需额外编写复杂程序,以下是可直接使用的实现方案:

实现思路

  1. 先解析source1.txt,构建「原始单词」和「带连字符拆分版本」的映射字典
  2. 遍历source2.txt,将对应位置的原始单词替换为映射字典中的拆分版本

可直接执行的awk命令

awk '
# 处理第一个文件source1.txt,构建映射表
NR == FNR {
    if(match($0, /<span class="INFLX" >([^<]+)<\/span><span class="HYPHENATION" >([^<]+)<\/span>/, m)) {
        hyphen_map[m[1]] = m[2]
    }
    next
}
# 处理第二个文件source2.txt,执行替换
{
    for(word in hyphen_map) {
        sub("\\[UK\\] " word, "[UK] " hyphen_map[word])
    }
    print
}
' source1.txt source2.txt > output.txt

说明

  • NR == FNR是awk处理多文件的常用判断逻辑:NR是全局行号,FNR是当前文件的行号,两者相等时代表正在处理第一个输入文件source1.txt
  • 处理source1.txt时仅做映射关系提取,不输出内容
  • 处理source2.txt时会遍历所有已存储的映射关系完成替换,最终输出的内容直接重定向到output.txt即可
  • 如果需要直接修改source2.txt而不是生成新文件,使用GNU awk可添加-i inplace参数,效果和sed -i一致
  • sed本身虽然也能实现双文件替换,但逻辑繁琐可读性差,这类需要暂存映射关系的场景更适合用awk实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:09:01