仅当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系统上使用它。那可能吗?
谢谢你的时间
答案 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}}管道回显线来删除。