Знайти і замінити у виході команди на основі вмісту файлу


1

Я маю 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
  • The tail команда передається в цикл while, який зчитує вхідну лінію за рядком у змінну $l.
  • Усередині цього циклу існує інший цикл while, який читає файл list рядок за рядком і замінює значення з list в $l змінної.
  • Потім рядок друкується у stdout.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.