我正在寻找一种方法,最好是在bash中合并两个ini文件。这是详细信息。我有一个文件包含“默认值”,而另一个文件仅指定应更改的行。
例如,我们有一个保存默认值的文件default.ini
:
[foo]
bar=1
baz=2
然后我们有一个单独的文件overrides.ini
,其中包含“替代”:
bar=10
我想结束的是:
[foo]
bar=10
baz=2
patch
立即浮现在脑海,但是除非overrides.ini
更改了default.ini
,否则bar
在overrides.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]);
});
似乎是一个选项,直到我看到需要对输入文件进行排序的要求,在我的情况下这是不可能的。
答案 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