我需要获得虚拟化环境中数千台服务器的列表。在一个文件上我有这样的东西:
Name Host
sysserver0012 btesxid432.eu.domain.com
sysserver0015 btesxid433.eu.domain.com
ldap56 essgdb56.rspc-la.domain.com
..
该文件是通过 vCenter 生成的。我有另一个文件,其中包含驻留在不同 vCenter 上的虚拟机列表。例子:
sysserver0015.eu.domain.com
sysserver0050.eu.domain.com
我需要从第一个文件的每个条目中获取匹配的字符串,并获取该文件与所有主机的匹配,但问题是,在第一个文件上,您只有主机名,而没有 FQDN,而在完整的列表中,您所做的,我想找到一种方法来进行搜索,如果在第二个文件中找到主机名(没有完整的域),则打印出这些行仅保存到新文件中
因此,作为根据上述输入生成的新文件的演示,这将被写入:sysserver0015 btesxid433.eu.domain.com
答案1
或者尝试awk
awk -F"[ .]" 'NR==FNR {SRCH[$1]; next} $1 in SRCH' file2 file1
sysserver0015 btesxid433.eu.domain.com
答案2
您在寻找这样的东西吗?:
while read a1 a2 ; do
a3=$(grep $a1 file1.txt)
printf "$a1 $a2 ${a3:-NO_MATCH}\n"
done <file2.txt | column -t