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

Unix环境下实现列值更新:编写脚本完成指定文件内容替换需求

实现键值替换并保留原文本结构的Unix脚本方案

这里有个简洁的awk方案,完美匹配你的需求——用文件2里的键值对替换文件1中对应键的数值,同时保留其他所有原始内容:

核心脚本

awk 'NR==FNR { kv[$1] = $2; next } {
    for (i = 1; i <= NF; i++) {
        if ($i in kv) $i = kv[$i]
    }
    print
}' file2 file1 > output.txt

脚本解释

  • 第一步(处理file2):NR==FNR是awk的经典写法,用来识别第一个输入文件(这里是file2)。我们把每一行的第一个字段(比如ABC、DEF)作为键,第二个字段(3、4)作为值,存到关联数组kv里。next命令让awk直接跳到下一行,不执行后面的逻辑。
  • 第二步(处理file1):遍历file1的每一个字段,如果当前字段是kv数组里存在的键(比如ABC),就把它替换成对应的数值(3);如果不是,就保留原内容。最后把修改后的整行打印出来,重定向到output.txt文件。

测试验证

假设你的文件内容如下:

file1: ABC 1 cvb DEF 2. bnm
file2: ABC 3 DEF 4

运行脚本后,output.txt的内容就是:
ABC 3 cvb DEF 4 bnm

这个方法的好处是不需要提前知道键的位置,不管键在file1的哪个位置,只要匹配上就会替换,灵活性很高~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:39:25