根据文件内容在命令输出中查找和替换

根据文件内容在命令输出中查找和替换

我有一个tail -f命令读取包含 IP 的日志,但是我希望用主机名替换这些 IP,我有一个dhcpd.leases可供运行该命令的机器使用的文件。

我已经能够将该dhcp.leases文件转换为(可能?)更可用的格式:

10.0.0.1 Hostname1
10.0.0.2 Hostname2

答案1

假设您要尾随的文件的文件名是file,列表的文件名是list。我还假设该文件list如下所示:

10.0.0.1 Hostname1
10.0.0.2 Hostname2

然后使用这个:

tail -f file | while read l; do \
  while read i h; do l="${l//$i/$h}"; done <list; echo "$l"; \
done
  • tail命令通过管道传输到 while 循环,该循环将输入逐行读入变量$l
  • 在该 while 循环内部,还有另一个 while 循环逐行读取文件并替换变量中list的值。list$l
  • 然后该行被打印到标准输出。

相关内容