【发布时间】:2016-04-06 21:44:33
【问题描述】:
我有两个文件 File_A 和 File_B 包含键/值对
文件_A
ANT_HOME=/opt/apps/apache-ant
HIBERNATE=/opt/apps/some/path/to/hibernate
BATCHDAEMON=false
BATCHEDIT_ENABLED=false
BATCHENABLED=false
----
----
<120 lines)
文件_B
ANT_HOME=$ANT_DIR
HIBERNATE=$HIBERNATE_LOCATION
----
DBCONNECTION=
DBNAME=
DBUSER=
DBPASS=
DBPORT=
DBSERVER=
<70 lines>
我想将 File_A 中的键与 File_B 中的键进行比较,以及是否存在从 File_B 到 file_A 的匹配替换值
最终结果
文件_A ANT_HOME=$ANT_DIR 休眠=$HIBERNATE_LOCATION DBCONNECTION= 数据库名称= 数据库用户= DBPASS= DBPORT= 数据库服务器= ……
还有一些值包含“=”
例如
SOME_PASSWD=Qwcnyt2-49zstyq4=
所以我一直在使用正则表达式在“=”之前获取第一次出现的值
我正在使用 awk 来查看是否得到了想要的结果,但是我无法正确替换。
awk 'BEGIN {FS = "/[^=]*/"} FNR==NR { array[$1]=$2; next } $1 in array { sub ($1, array[$2])} 1' File_B, File_A >> some_tempfile.ini
提前致谢
【问题讨论】: