Pregunta Buscar y reemplazar en la salida del comando en función del contenido del archivo


tengo un tail -f comando leer un registro que contiene direcciones IP, sin embargo, deseo reemplazar estas direcciones IP con nombres de host, tengo el dhcpd.leases archivo disponible para la máquina en la que se está ejecutando.

He podido convertir el dhcp.leases archivo en (¿tal vez?) un formato más utilizable:

10.0.0.1 Hostname1
10.0.0.2 Hostname2

1


origen




Respuestas:


Suponiendo que el nombre de archivo del archivo que desea alinear es file y el nombre de archivo de la lista es list. También asumo que el archivo list parece:

10.0.0.1 Hostname1
10.0.0.2 Hostname2

Luego usa esto:

tail -f file | while read l; do \
  while read i h; do l="${l//$i/$h}"; done <list; echo "$l"; \
done
  • los tail comando se canaliza a un ciclo while que lee la línea de entrada por línea en la variable $l.
  • Dentro de ese ciclo while, hay otro ciclo while que lee el archivo list línea por línea y reemplaza los valores de list en el $l variable.
  • Luego, la línea se imprime en stdout.

1