[comment]: # translation:outdated

[comment]: # attributes: notoc

[comment]: # (terms: fmtnum, fmttime, iregsub, regsub)

[comment]: # ({b219ec06-0458cee0})
# 1 Макро функције

#### Преглед

Макро функције нуде могућност прилагођавања вредности [макро](/manual/config/macros) (на пример, скраћивање или издвајање одређених подстрингова), што олакшава рад са њима.

Синтакса макро функције је:
   
```default
{macro.func(params)}
```

где је

-   ** macro** - макро за прилагођавање;
-   ** func** - функција коју треба применити (погледајте [подржане функције](#supported-functions));
-   ** params** - листа параметара функције раздвојених зарезима, која мора бити **под двоструким наводницима** ако:
   -   почиње са размаком или двоструким наводницима;
   -   садржи затварајуће заграде или зарез.

На пример:

```default
{{TIME}.fmttime(format,time_shift)}
{{ITEM.VALUE}.regsub(pattern, output)}
{{$USERMACRO}.regsub(pattern, output)}
{{#LLDMACRO}.regsub(pattern, output)}
```

Макро функције су подржане за:

-   [Уграђене макрое](/manual/appendix/macros/supported_by_location)
-   [Корисничке макрое](/manual/appendix/macros/supported_by_location#other-macro-types)
-   [Макрое за откривање ниског нивоа](/manual/appendix/macros/supported_by_location#other-macro-types)
-   [Макрое израза](/manual/appendix/macros/supported_by_location#other-macro-types)

Макро функције се могу користити на свим локацијама које подржавају наведене макрое.
Ово се примењује осим ако је изричито наведено да се очекује само макро (на пример, када конфигуришете [макроа домаћина](/manual/config/hosts/host#configuration) или правила откривања ниског нивоа [филтери](/manual/discovery/low_level_discovery#filter)).

Погледајте такође: [познате проблеме](//manual/installation/known_issues#macro-functions).

Подржана је једна функција по макроу; вишеструке макро функције у ланцу нису подржане.

:::noteclassic
Молимо погледајте [примере иѕбегавања специјалних знакова](/manual/appendix/escaping) за случајеве када се функције макроа користе унутар других контекста (функција, кључ ставке, други макро, итд.).
:::

[comment]: # ({/b219ec06-0458cee0})

[comment]: # ({49d5aaf8-f23fb953})
#### Подржане функције

Функције су наведене без додатних информација.
Кликните на функцију да видите све детаље.

|Function|Description|
|--|--------|
|[btoa](#btoa)|Кодирање вредности макроа у Base64 формат.|
|[fmtnum](#fmtnum)|Форматирање броја за контролу броја цифара које се штампају после децималне запете.|
|[fmttime](#fmttime)|Време форматирање.| 
|[htmldecode](#htmldecode)|Декодирање вредности макроа из HTML кодирања.|
|[htmlencode](#htmlencode)|Кодирање вредности макроа у HTML кодирања.|
|[iregsub](#iregsub)|Издвајање подстринга помоћу подударање регуларног израза (неосетљиво на велика и мала слова).|
|[lowercase](#lowercase)|Трансформација вредности макро карактера у мала слова.|
|[regrepl](#regrepl)|Замена карактера/подниза у вредности макроа.|
|[regsub](#regsub)|Издвајање подниза помоћу регуларног израза (разликује велика и мала слова).|
|[tr](#tr)|Транслитерација вредности макро карактера.|
|[uppercase](#uppercase)|Трансформација вредности макро карактера у велика слова.|
|[urldecode](#urldecode)| Декодирање вредности макроа из URL кодирања.|
|[urlencode](#urlencode)|Кодирање вредности макроа у URL кодирање.|

[comment]: # ({/49d5aaf8-f23fb953})

[comment]: # ({91058888-c1632a9e})
#### Детаљи функције

Синтакса макро функције је:

    {macro.func(params)}

-  **macro** - макро за прилагођавање, на пример {ITEM.VALUE} или {\#LLDMACRO};
-  **func** - функција коју треба применити;
-  **params** - листа параметара функције раздвојена зарезима, која се мора навести ако:
    -  почните са размаком или двоструким наводницима;
    -  садрже завршне заграде "``" или зарез.

Опциони параметри функције су означени са < >.

[comment]: # ({/91058888-c1632a9e})

[comment]: # ({d82603b4-26fb165d})
##### btoa {#btoa}

Кодирање вредности макроа у Base64 кодирање.
Base64 кодирање метода за представљање бинарних података као текста, корисна за складиштење и сигуран пренос бинарног садржаја преко протокола заснованих на тексту.

Пример:

```default
{{ITEM.VALUE}.btoa()} - will Base64-encode a value like "zabbix" into "emFiYml4"
```

Ова функција је подржана од Zabbix-а 7.0.4.

[comment]: # ({/d82603b4-26fb165d})

[comment]: # ({31245134-4df3fd19})
##### fmtnum(digits) {#fmtnum}

Форматирање бројева за контролу броја цифара које се штампају после децималне тачке.

Параметри:

-  **digits** - број цифара после децималног зареза.
Важећи опсег: 0-20.
Завршне нуле неће бити произведене.

Примери:

```default
{{ITEM.VALUE}.fmtnum(2)} - will return "24.35" from a received value of "24.3483523"
{{ITEM.VALUE}.fmtnum(0)} - will return "24" from a received value of "24.3483523"
```

[comment]: # ({/31245134-4df3fd19})

[comment]: # ({d11db4c4-3caa4dc7})
##### fmttime(format,<time\_shift>) {#fmttime}

Форматирање времена.<br>
Имајте на уму да се ова функција може користити са макроима који се решавају у вредност у једном од следећих временских формата:

-   `hh:mm:ss`
-   `yyyy-mm-ddThh:mm:ss[tz]` (ISO8601 standard)
-   UNIX timestamp

Параметри:

-   **format** - обавезан формат стринг, компатибилан са форматирањем функције `strftime`;<br>
-   **time\_shift** (опционо) - временски помак примењен на време пре форматирања; треба да почне са `-<N><time_unit>` или `+<N><time_unit>`, где је:<br>
    -   `N` - број временских јединица за додавање или одузимање;
    -   `time_unit` - h (сат), d (дан), w (седмица), M (месец) или y (година).

Коментари:

-   Параметар `time_shift` подржава операције времена у више корака и може укључивати `/<time_unit>` за померање на почетак временске јединице
    (`/d` - поноћ, `/w` - 1. дан у недељи (понедељак), `/М` - 1. дан у месецу, итд.).
    Примери: `-1w` - тачно 7 дана уназад; `-1w/w` - понедељак претходне недеље; `-1w/w+1d` - уторак претходне недеље.
-   Временске операције се рачунају с лева на десно без приоритета.
На пример, `-1M/d+1h/w` ће бити рашчлањено као `((-1M/d)+1h)/w`.

Примери:

```default
  {{TIME}.fmttime(%B)} - will return "October" from a received value of "1633098961"
  {{TIME}.fmttime(%d %B,-1M/M)} - will return "1 September" from a received value of "1633098961"
```

[comment]: # ({/d11db4c4-3caa4dc7})

[comment]: # ({26e2caaa-6f65f316})
##### htmldecode {#htmldecode}

Декодирање вредности макроа из HTML кодирања.
Ова функција је подржана од Zabbix-а 7.0.4.

Следећи карактери су подржани:

|Value|Decoded value|
|----|------|
|`&amp;`|`&`|
|`&lt;`|`<`|
|`&gt;`|`>`|
|`&quot;`|`"`|
|`&#039;`|`'`|
|`&#39;`|`'`|

Пример:

```default
{{ITEM.VALUE}.htmldecode()} - will HTML-decode a value like "&lt;" into "<"
```

[comment]: # ({/26e2caaa-6f65f316})

[comment]: # ({f282eb66-c4adc457})
##### htmlencode {#htmlencode}

Декодирање вредности макроа из HTML кодирања.
Ова функција је подржана од Zabbix-а 7.0.4.

Следећи карактери су подржани:

|Value|Encoded value|
|----|------|
|`&`|`&amp;`|
|`<`|`&lt;`|
|`>`|`&gt;`|
|`"`|`&quot;`|
|`'`|`&#39;`|

Пример:

```default
{{ITEM.VALUE}.htmlencode()} - will HTML-encode a character like "<" into "&lt;"
```

[comment]: # ({/f282eb66-c4adc457})

[comment]: # ({edaa6df7-e78b5abd})
##### iregsub(pattern,output) {#iregsub}

Екстракција подстринга помоћу подударања регуларног израза (не разликује велика и мала слова).

Параметри:

-  **pattern** - регуларни израз за подударање;
-  **output** - излазне опције.
**\\1 - \\9** чувари места су подржани за снимање група.
**\\0** враћа одговарајући текст.

Коментари:

-   Ако нема подударања за регуларни израз, функција враћа празан стринг.
-   Ако је образац функције нетачан регуларни израз, макро се евалуира као 'UNKNOWN' (осим за макрое за откривање ниског нивоа, у ком случају ће функција бити игнорисана, а макро ће остати нерешен).
-   Референце на непостојеће групе за снимање у стрингу за замену се замењују празним стрингом.

Пример:

```default
{{ITEM.VALUE}.iregsub("fail|error|fault|problem","ERROR")} - will resolve to "ERROR" if "fail", "error", "fault", or "problem" substrings are received (case-insensitive); will return an empty string if there is no match
```

[comment]: # ({/edaa6df7-e78b5abd})

[comment]: # ({67e9a7db-9922adb7})
##### lowercase {#lowercase}

Трансформација свих карактера макро вредности у мала слова.
Ради са једнобајтним скуповима карактера (као што је ASCII) и не подржава UTF-8.
Ова функција је подржана од Zabbix-а 7.0.4.

Пример:

```default
{{ITEM.VALUE}.lowercase()} – трансформишите вредност као што је "Zabbix SERVER" у "zabbix server" (мала слова)
```

[comment]: # ({/67e9a7db-9922adb7})

[comment]: # ({4b2ce894-031347c2})
##### regrepl(pattern,replacement,<pattern2>,<replacement2>,...) {#regrepl}

Замена карактера/подниза у вредности макроа.
*Напомена* да је ова функција подржана само са библиотеком **libpcre2**.
Ако је Zabbix сервер/прокси компајлиран са `libpcre`, ова функција ће вратити UNKNOWN.
Ова функција је подржана од Zabbix-а 7.0.4.

Параметри:

-   **pattern** - регуларни израз за подударање;
-   **replacement** - стринг за замену.
**\\1 - \\9** чувари места су подржани у заменским стринговима за хватање група.

Коментари:

-   Шаблони и замене се обрађују секвенцијално, при чему се сваки следећи пар примењује у складу са исходом
претходне замене; 
-   Референце на непостојеће групе хватања у низу замене се замењују празним низом.

Примери:

```default
{{ITEM.VALUE}. regrepl("oldParam", "newParam")} - ће заменити "oldParam" са "newParam".
{{ITEM.VALUE}.regrepl("([^а-z])","\\\ 1")} - сви карактери који нису словни биће приказани са обрнутом косом цртом
{$THRESHOLD:"{{#FSNAME}. regrepl(\"\\$\",\"\")}"} - уклониће обрнуту косу црту (на пример, да замени "C:\" са "C:")
{{ITEM.VALUE}.regrepl("_v1\.0", "_v2.0", "\(final\)", "")} - замениће више делова у вредности ставке
```

[comment]: # ({/4b2ce894-031347c2})

[comment]: # ({825c2e80-a8dcf3b5})
##### regsub(pattern,output) {#regsub}

Екстракција подстринга помоћу подударања регуларног израза (разликује велика и мала слова).

Параметри:

-   **pattern** - регуларни израз за подударање;
-   **output** - излазне опције.
**\\1 - \\9** чувари места су подржани за снимање група.
**\\0** враћа одговарајући текст.

Коментари:

-   Ако нема подударања за регуларни израз, функција враћа празан стринг.
-   Ако је образац функције нетачан регуларни израз, макро се евалуира као 'UNKNOWN' (осим за макрое за откривање ниског нивоа, у ком случају ће функција бити игнорисана, а макро ће остати нерешен).
-   Референце на непостојеће групе за снимање у стрингу за замену се замењују празним стрингом.

Примери:

```default
{{ITEM.VALUE}.regsub("^([0-9]+)", ID проблема: \1)} - решиће се као "ID проблема: 123" ако је примљена вредност попут "123 Log line"{{ITEM.VALUE}.regsub("fail|error|fault|problem","ERROR")} - решиће се као "ERROR" ако су примљени подстрингови "fail", "error", "fault" или "problem" (разликује велика и мала слова);
вратиће празан стринг ако нема подударања
```

Погледајте [више примера](#additional-examples).

[comment]: # ({/825c2e80-a8dcf3b5})

[comment]: # ({f0be3d81-e91a391f})
##### tr(characters,replacement) {#tr}

Транслитерација карактера вредности макроа.
Ова функција је подржана од Zabbix-а 7.0.4.

-  **карактери** - скуп карактера за замену;
-  **замена** - скуп позиционо одговарајућих заменских карактера.

Примери:

```default
{{ITEM.VALUE}.tr(abc, xyz)} - замениће сва појављивања "а" са "x", "b" са "y", "c" са "z"
{{ITEM.VALUE}.tr(abc, xyzq)} - замениће сва појављивања "а" са "x", "b" са "y", "c" са "z" ("q" се занемарује)
{{ITEM.VALUE}.tr(abcde, xyz)} - замениће сва појављивања "a" са "x", "b" са "y", "c" са "z", "d" са "z" , "е" са "z" (тј., xyzzz)
{{ITEM.VALUE}.tr("\\\'", "\/\"")} - замениће сва појављивања обрнуте косе црте са косом цртом унапред, једноструке са двоструким наводницима
{{ITEM.VALUE}.tr(A-Z,a-z)} - претвориће сва слова у мала слова
{{ITEM.VALUE}.tr(0-9a-z,*)} - замениће све бројеве и мала слова са "*"
{{ITEM.VALUE}.tr(0-9,ab)} - замениће сва појављивања 0 са "а" и замениће сва појављивања 1, 2, 3, 4, 5, 6, 7, 8 и 9 са "b"
{{ITEM.VALUE}.tr(0-9abcA-L,*)} – замениће све бројеве, "abc" карактере и опсег А-L са "*"
{{ITEM.VALUE}.tr("\n","*")} - замениће појављивања на крају реда са *
{{ITEM.VALUE}.tr("e", "\n")} - замениће све "е" са крајем реда
```

Да бисте укључили литералне карактере:

```default
обрнута коса црта - мора се избећи као \\
једноструки наводник - мора се избећи као \'
двоструки наводник - мора се изаћи као \"
```

Подржане излазне секвенце са обрнутом косом цртом:

```default
\\\\ => \\ - двострука обрнута коса црта у једну обрнуту косу црту
\\a  => \a - аларм
\\b  => \b - брисање уназад
\\f  => \f - прелом странице
\\n  => \n - нови ред
\\r  => \r - повратак
\\t  => \t - хоризонтални табулатор
\\v  => \v - вертикални табулатор
```

[comment]: # ({/f0be3d81-e91a391f})

[comment]: # ({ec9dd6cc-d8a53517})
##### uppercase {#uppercase}

Трансформација свих карактера макро вредности у велика слова.
Ради са једнобајтним скуповима карактера (као што је ASCII) и не подржава UTF-8.
Ова функција је подржана од Zabbix-а 7.0.4.

Пример:

```default
{{ITEM.VALUE}.uppercase()} – трансформишите вредност као што је "Zabbix Server" у "ZABBIX SERVER" (велика слова)
```

[comment]: # ({/ec9dd6cc-d8a53517})

[comment]: # ({98faa99f-4fb82e83})
##### urldecode {#urldecode}

Декодирање вредности макроа из URL кодирања.
Ова функција је подржана од Zabbix-а 7.0.4.

Пример:

```default
{{ITEM.VALUE}.urldecode()} - URL-декодирање вредности попут "%2F" у "/"
```

[comment]: # ({/98faa99f-4fb82e83})

[comment]: # ({8b7a9c23-8dec62fd})
##### urlencode {#urlencode}

Декодирање вредности макроа из URL кодирања.
Ова функција је подржана од Zabbix-а 7.0.4.

Пример:

```default
{{ITEM.VALUE}.urlencode()} - ће URL-кодирати знак попут "/" у "%2F"
```

[comment]: # ({/8b7a9c23-8dec62fd})

[comment]: # ({e94de17d-b6fdaa9a})
#### Додатни примери

Табела испод показује више примера коришћења макро функција.

|Macro function|Received value|Output|
|-------------|----|-------------|
|`{{ITEM.VALUE}.regsub(^[0-9]+, Problem)}`|`123Log line`|`Problem`|
|`{{ITEM.VALUE}.regsub("^([0-9]+)", "Problem")}`|`123 Log line`|`Problem`|
|`{{ITEM.VALUE}.regsub(".*", "Problem ID: \1")}`|`Log line`|`Problem ID: `|
|`{{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " Problem ID: \1_\2 ")}`|`MySQL crashed errno 123`|` Problem ID: MySQL\_123 `|
|`{{ITEM.VALUE}.regsub("([1-9]+", "Problem ID: \1")}`|`123 Log line`|`UNKNOWN` (неважећи регуларни израз)|
|`{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)}`|`customername_1`|`customername`|
|`{{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)}`|`customername_1`|`1`|
|`{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)}`|`customername_1`|`{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)}` (неважећи регуларни израз)|
|`{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"}`|`customername_1`|`{$MACRO:"customername"}`|
|`{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"}`|`customername_1`|`{$MACRO:"1"}`|
|`{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"}`|`customername_1`|`{$MACRO:"{{#M}.regsub(\"(.*)_([0-9]+\", \1)}"}` (неважећи регуларни израз)|
|`"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \1)}\"}"`|`customername_1`|`"{$MACRO:\"customername\"}"`|
|`"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+)\\", \2)}\"}"`|`customername_1`|`"{$MACRO:\"1\"}"`|
|`"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}"`|`customername_1`|`"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}"` (неважећи регуларни израз)|

##### Видите комплетне вредности ставке

Дуге вредности решених макроа {ITEM.VALUE} и {ITEM.LASTVALUE} за ставке текста/дневника су скраћене на 20 карактера на неким локацијама корисничког интерфејса.
Да бисте видели комплетна вредности ових макроа, можете да користите функције макроа, нпр.:

```default
{{ITEM.VALUE}.regsub("(.*)", \1)}
{{ITEM.LASTVALUE}.regsub("(.*)", \1)}
```

Погледајте такође: {ITEM.VALUE} и {ITEM.LASTVALUE} [детаље о макроу](/manual/appendix/macros/supported_by_location).

[comment]: # ({/e94de17d-b6fdaa9a})
