如果IP相同,则合并两个/ etc / hosts文件

时间:2018-06-14 11:51:43

标签: linux awk sed merge

仅当IP地址相同时,我才需要在唯一文件中合并两个/ etc / hosts文件。

文件1包含:

172.27.88.143   node1
172.23.171.42   node2
172.23.171.36   node3
172.27.88.136   node4
172.27.88.137   node5
172.27.88.138   node5
172.27.88.200   node6

文件2包含:

172.27.88.200   node6.domain.corp
172.27.88.158   node7.domain.corp

结果文件必须是:

172.27.88.143   node1
172.23.171.42   node2
172.23.171.36   node3
172.27.88.136   node4
172.27.88.137   node5
172.27.88.138   node5
172.27.88.200   node6   node6.domain.corp

我需要在Linux系统上使用它。那可能吗?

谢谢你的时间

2 个答案:

答案 0 :(得分:2)

关注awk可能会对您有所帮助。

awk 'FNR==NR{a[$1]=$2;next} {print $0,a[$1]?"\t" a[$1]:a[$1]}' FILE2 FILE1

答案 1 :(得分:0)

循环而不是单行,但当f2/etc/hosts是两个while read line; do ip="$(echo "${line}" | awk '{print $2}')" secondName="$(grep "${ip}" "${f2}" | awk '{print $2}')" echo "${line} ${secondName}" done < "${f1}" 文件的变量时,这应该有效:

| sed 's/ \+$//'

输出包含一些尾随空格,可以通过{{1}}管道回显线来删除。