shell - 用于合并具有重复键的 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
解决方案同样有效。
解决方案
另一种非常简单的方法是使用排序:
sort -u -t '=' -k 1,1 file1 file2 > file3
生成一个文件,其中来自 file1 的密钥优先于来自 file2 的密钥。
推荐阅读
- javascript - 需要把这个对象放到一个数组中,怎么办?
- python - 如何在 3D numpy 数组的第三维中转换列表对象类型?
- github - GitHub CI/CD - 运行提升的命令
- linux - 防止在模块卸载 ibm 负载共享设施上运行 exec 命令
- javascript - 如何在反应中从孩子执行父母动作
- scheme - 检查字符串是否为空或仅在球拍中的空白字符
- asp.net - 在 Flutterwave 中为不同的货币设置不同的金额
- flutter - Flutter - 小部件列表(内部)上的 setState 不工作或更新主小部件状态
- excel - Samba 网络驱动器上的 Excel 文件无法打开
- powerbi - 如何在没有数据的情况下显示月份?