用 SED 替换 2 个文件中的文件内容

用 SED 替换 2 个文件中的文件内容

我有2个文件。

文件 1 如下所示:

Company: "Acme CO"
Address: "123 Main Street"
Zip: "12345"

文件 2 是一个 JSON 文件,其中包含作为该数据占位符的变量。例如,%%company%%公司名称将放在哪里。

我需要能够搜索文件 1 以获取公司、地址、邮政编码等的值,并用这些数据替换文件 2 中的变量。

关于实现这一目标的最佳方法有什么想法吗?

答案1

运行这个:

 cat a.json | awk -v file="data.txt" -f substitude.awk

在哪里

替代.awk

BEGIN{
    while(getline < file) {
            split($0, data, ":");
            key = "%%" tolower(data[1]) "%%";
            value = data[2];
            gsub(/^\s*\"|\"\s*$/, "", value)
            map[key] = value;
    }
}{
    s = $0;
    for(key in map) {
            gsub(key, map[key], s);  
    }
    print s;
}END{

}

数据.txt:

Id: "123"
Company: "Acme CO"
Address: "123 Main Street"
Zip: "12345"

a.json:

{ "identifier": "%%id%%", "name": "%%company%%" }

结果

{ "identifier": "123", "name": "Acme CO" }

答案2

perl -nE  'if ($ARGV eq "f2" ){ say s/%%(.*?)%%/$d{$1}/gr } 
           elsif( /(\w+):\s*"(.*)"/ ){ $d{$1}=$2 }'    f1 f2

相关内容