首页 > 解决方案 > 用于合并具有重复键的 dotenv 文件的 Shell 脚本

问题描述

给定两个 dotenv 文件,

# file1
FOO="X"
BAR="B"

# file2
FOO="A"
BAZ="C"

我想跑

$ ./merge.sh file1.env file2.env > file3.env

获得以下输出:

# file3
FOO="A"
BAR="B"
BAZ="C"

到目前为止,我使用python-dotenv模块将文件解析成字典,合并它们并写回它们。但是,我觉得 shell 中应该有一个简单的解决方案,可以让自己摆脱第三方模块来完成这样的基本任务。


回答

好的,所以我最终使用

$ sort -u -t '=' -k 1,1 file1 file2 | grep -v '^$\|^\s*\#' > file3

它省略了空行和注释。然而,建议的awk解决方案同样有效。

标签: shellenvironment-variables

解决方案


另一种非常简单的方法是使用排序:

sort -u -t '=' -k 1,1 file1 file2 > file3

生成一个文件,其中来自 file1 的密钥优先于来自 file2 的密钥。


推荐阅读