2개 파일의 파일 내용을 SED로 교체

2개 파일의 파일 내용을 SED로 교체

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

관련 정보