根据Unix中第二个文件中的记录替换第一个文件中的变量值

时间:2018-07-26 05:32:17

标签: shell unix

我有以下文件 a)文件A

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root xmlns="http://aaa/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema" version="2.0">
    <project name="source">
        <mapping name="m_Source">
            <parameter name="SQL_Query">select  * from $$SCHEMA_NAME."$$TABLE_NAME" where $$COL > $$VALUE and $CONDITIONS</parameter>
            <parameter name="CONDITIONS">Default</parameter>
        </mapping>
    </project>
</root>

b)文件b

$$SCHEMA_NAME=test
$$COL=LOAD_DATETIME
$$TABLE_NAME=table1
$$VALUE=1234

我想用文件a中右侧(即test,DATETIME,table1,1234)中提到的值替换$$ SCHEMA_NAME,$$ COL,$$ TABLE_NAME和$$ VALUE的值

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

#!/bin/sh

while read line; do
  a=$(echo $line | awk -F'=' '{print $1}')
  b=$(echo $line | awk -F'=' '{print $2}')
  sed -i "s/$a/$b/" file_a
done < file_b

简要说明,

  1. 读取file_b中的每一行,并将等式左边的值分配给'a',将右边的值分配给'b'。
  2. 使用sed将file_a中的'a'中的值替换为'b'中的值。