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

Shell脚本中对比两个文件列并生成指定格式file3的方法求助

解决方案:用Awk实现列对比与结果生成

没问题,这个需求用awk就能轻松搞定,它处理这类文本列匹配的场景特别高效。下面是具体的实现方法:

方法一:单行命令直接运行

你可以直接在终端执行这条命令,不需要额外写脚本文件:

awk 'BEGIN { FS = ","; OFS = "," } NR == FNR { val[$2] = $1; next } { print $2, $1, ($2 in val ? val[$2] : 0) }' file2 file1 > file3

方法二:写成Awk脚本文件(更易维护)

如果以后需要修改逻辑,把代码写到脚本里更方便:

  1. 创建一个名为compare_files.awk的文件,内容如下:
BEGIN {
    # 设置输入和输出的字段分隔符为逗号
    FS = ","
    OFS = ","
}

# 处理第一个输入文件(file2):将时间戳映射到对应数值
NR == FNR {
    val[$2] = $1
    next  # 跳过后续逻辑,处理下一行
}

# 处理第二个输入文件(file1):生成目标格式的行
{
    # 检查当前时间戳是否在file2的映射里,存在则取对应值,否则用0
    file2_val = ($2 in val) ? val[$2] : 0
    # 按要求格式输出:时间戳, file1的数值, file2的数值/0
    print $2, $1, file2_val
}
  1. 运行脚本生成file3:
awk -f compare_files.awk file2 file1 > file3

效果验证

用你给出的示例文件测试:

  • file1的内容:

21,2018042100
22,2018042101
87,2018042102
98,2018042103

  • file2的内容:

45,2018042100
86,2018042102
87,2018042103

运行后生成的file3完全符合你的要求:

2018042100,21,45
2018042101,22,0
2018042102,87,86
2018042103,98,87

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:40:54