如何将ini文件与替换文件合并

时间:2019-10-26 20:06:25

标签: bash merge ini

我正在寻找一种方法,最好是在bash中合并两个ini文件。这是详细信息。我有一个文件包含“默认值”,而另一个文件仅指定应更改的行。

例如,我们有一个保存默认值的文件default.ini

[foo]
bar=1
baz=2

然后我们有一个单独的文件overrides.ini,其中包含“替代”:

bar=10

我想结束的是:

[foo]
bar=10
baz=2

patch立即浮现在脑海,但是除非overrides.ini更改了default.ini,否则baroverrides.ini中的所有值都无法起作用(在这种情况下,我可能会只需使用join

import {default as Web3} from 'web3'; web3.eth.getAccounts(function (err, accs) { if (err != null) { self.setStatus("There was an error fetching your accounts"); return; } if (accs.length === 0) { self.setStatus("Make sure that you installed and started Metamask plugin and reload this page"); return; } console.log('Got account: ', accs[0]); }); 似乎是一个选项,直到我看到需要对输入文件进行排序的要求,在我的情况下这是不可能的。

1 个答案:

答案 0 :(得分:0)

如果这是bar中唯一的default.ini,则可以使用awk:

$ awk -F= 'NR==FNR{a[$1]=$0;next}($1 in a){$0=a[$1]}1' overrides default

输出:

[foo]
bar=10
baz=2

解释:

$ awk -F= '              # = is the delimiter
NR==FNR {                # process overrides file
    a[$1]=$0             # hash record, first field is the key
    next                 # process next override entry
}
($1 in a) {              # if ini entry is found in a hash
    $0=a[$1]             # replace with that
}1' overrides default    # output, mind the file order