将文件上的每一行递归搜索到另一个文件并将输出打印到新文件

将文件上的每一行递归搜索到另一个文件并将输出打印到新文件

我需要获得虚拟化环境中数千台服务器的列表。在一个文件上我有这样的东西:

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

相关内容