KeyWeb
31111111111Rating 3.00 (2 Votes)
Суть простая - нужно  объединить ячейки, выставив между ними нужный символ, мне понадобилось для создания регулярной строки в новом правиле для Fail2Ban. Началось с того, что в логах nginx стали появляться сообщения о попытках перебора разных папок, путем грепов и разного рода фильтраций удалось вытащить нужный лист папок который пытались перебрать, список получился довольно большой:
zcat access.log-20180130.gz | grep 400 | awk '{print $7}' | uniq | sed 's#/*$##' | sed -e /^$/d
Пример вывода:
/HNAP1
/hudson/script
/script
/sqlite/main.php
/sqlitemanager/main.php
/SQLiteManager/main.php
...
Всего порядка 200 позиций в списке, нужно было как-то сформировать регулярный список типа:
\/HNAP|\/script|\/sqlite|\.php|\/PMA|\/pma|\/admin

Excel - макрос для объединения ячеек с нужным символом

Первое, что было под рукой, это Excel, в нем или LibreOffice можно объединить ячейки используя конструкцию:
=A1&"|\"&A2
и т.п., но нужно было автоматом протянуть все ячейки в строке, здесь помог VBScript, который нужно вставить в панель разработчика Alt + F11, добавить новый пустой модуль, добавить в модуль код:
Function CONCATENATEMULTIPLE(Ref As Range, Separator As String) As String
Dim Cell As Range
Dim Result As String
For Each Cell In Ref
 Result = Result & Cell.Value & Separator
Next Cell
CONCATENATEMULTIPLE = Left(Result, Len(Result) - 1)
End Function
Готово, теперь можно юзать такую формулу:
=CONCATENATEMULTIPLE(A1:A73,"|\")
Спасибо:
 
 
 
 
 
 

Добавить комментарий


Обновить
Защитный код

KeyWeb

Сейчас 136 гостей и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз