Используемая версия BASH:
echo $BASH_VERSION
4.4.19(1)-release
Я использую следующую сантехнику для извлечения всех запрещенных IP-адресов из файла журнала fail2ban:
cat /var/www/html/fail2ban.log | grep Ban | cut -d "]" -f3 | cut -d "r" -f2 | cut -d "e" -f2 | cut -d " " -f3 | uq | sort -n > /var/www/html/fail2ban.html
В результате получается файл HTMLсо списком IP-адресов, упорядоченных от низкого до высокого.
Моя цель - сделать каждый из IP-адресов кликабельными гиперссылками в целях удобства использования.Я успешно использовал следующие операции:
Шаг 1 - Добавьте каждую строку с начальной частью гиперссылок HTML.
Используемый код (успешно):sed -e 's/^/<a href=\"http:\/\//' -i /var/www/html/fail2ban.html
Шаг 2 - Добавить каждую строку с закрывающей частью гиперссылок HTML и разрывом строки.
Используемый код (успешно): sed -e 's/$/\">CLICK HERE<\/a><\/br>/' -i /var/www/html/fail2ban.html
Результат - Весь HTML-файл теперь содержит список ссылок, таких как:
<a href="http://10.30.20.40">CLICK HERE</a></br>
Проблема - Вместо того, чтобы "НАЖМИТЕ ЗДЕСЬ" в качестве текста ссылки, я хочу вместо этого отобразить соответствующий IP-адрес.Пример желаемого результата с использованием приведенного выше примера:
<a href="http://10.30.20.40">http://10.30.20.40</a></br>
Как этого последнего шага можно достичь с помощью sed, awk и т. Д .?
Пример ввода изфайл / var / www / html / fail2ban.html файл, содержащий следующие три строки:
<a href="http://1.2.3.4">CLICK HERE</a></br>
<a href="http://5.6.7.8">CLICK HERE</a></br>
<a href="http://9.10.11.12">CLICK HERE</a></br>
Желаемый вывод:
<a href="http://1.2.3.4">http://1.2.3.4</a></br>
<a href="http://5.6.7.8">http://5.6.7.8</a></br>
<a href="http://9.10.11.12">http://9.10.11.12</a></br>