[comment]: # translation:outdated

[comment]: # attributes: notoc

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

[comment]: # ({09129833-0458cee0})
# 1 Makro funkcijas

#### Pārskats

Makro funkcijas piedāvā iespēju pielāgot [makro](/manual/config/macros) vērtības (piemēram, saīsināt vai izvilkt noteiktas apakšvirknes), padarot tās ērtāk lietojamas.

Makro funkcijas sintakse ir:

```default
{macro.func(params)}
```

kur

-   **macro** - pielāgojamais makro;
-   **func** - piemērojamā funkcija (skatiet [atbalstītās funkcijas](#supported-functions));
-   **params** - ar komatiem atdalīts funkcijas parametru saraksts, kam jābūt **dubultpēdiņās**, ja tie:
    -   sākas ar atstarpi vai dubultpēdiņām;
    -   satur aizverošās iekavas vai komatu.

Piemēram:

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

Makro funkcijas tiek atbalstītas:

-   [Iebūvētajiem makro](/manual/appendix/macros/supported_by_location)
-   [Lietotāja makro](/manual/appendix/macros/supported_by_location#other-macro-types)
-   [Zema līmeņa atklāšanas makro](/manual/appendix/macros/supported_by_location#other-macro-types)
-   [Izteiksmju makro](/manual/appendix/macros/supported_by_location#other-macro-types)

Makro funkcijas var izmantot visās vietās, kur tiek atbalstīti uzskaitītie makro.
Tas attiecas uz visiem gadījumiem, izņemot, ja ir skaidri norādīts, ka tiek sagaidīts tikai makro (piemēram, konfigurējot [hostu makro](/manual/config/hosts/host#configuration) vai zema līmeņa atklāšanas noteikumu [filtrus](/manual/discovery/low_level_discovery#filter)).

Katram makro tiek atbalstīta viena funkcija; vairākas makro funkcijas ķēdē netiek atbalstītas.

:::noteclassic
Lūdzu, skatiet [ekranēšanas piemērus](/manual/appendix/escaping) gadījumiem, kad makro funkcijas tiek izmantotas citos kontekstos (funkcijā, vienuma atslēgā, citā makro utt.).
:::

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

[comment]: # ({f9dac088-b8563887})
#### Atbalstītās funkcijas

Funkcijas ir uzskaitītas bez papildu informācijas.
Noklikšķiniet uz funkcijas, lai skatītu pilnu informāciju.

|Funkcija|Apraksts|
|--|--------|
|[btoa](#btoa)|Makro vērtības kodēšana Base64 kodējumā.|
|[fmtnum](#fmtnum)|Skaitļu formatēšana, lai kontrolētu aiz komata drukāto ciparu skaitu.|
|[fmttime](#fmttime)|Laika formatēšana.|
|[htmldecode](#htmldecode)|Makro vērtības dekodēšana no HTML kodējuma.|
|[htmlencode](#htmlencode)|Makro vērtības kodēšana HTML kodējumā.|
|[iregsub](#iregsub)|Apakšvirknes iegūšana pēc atbilstības regulārajai izteiksmei (reģistrnejutīga).|
|[lowercase](#lowercase)|Makro vērtības rakstzīmju pārveidošana uz mazajiem burtiem.|
|[regrepl](#regrepl)|Rakstzīmes/apakšvirknes aizstāšana makro vērtībā.|
|[regsub](#regsub)|Apakšvirknes iegūšana pēc atbilstības regulārajai izteiksmei (reģistrjutīga).|
|[tr](#tr)|Makro vērtības rakstzīmju transliterācija.|
|[uppercase](#uppercase)|Makro vērtības rakstzīmju pārveidošana uz lielajiem burtiem.|
|[urldecode](#urldecode)|Makro vērtības dekodēšana no URL kodējuma.|
|[urlencode](#urlencode)|Makro vērtības kodēšana URL kodējumā.|

[comment]: # ({/f9dac088-b8563887})

[comment]: # ({91058888-c1632a9e})
#### Funkcijas informācija

Neobligātie funkcijas parametri ir norādīti ar < >.

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

[comment]: # ({d8d5fafe-6e2e93df})
##### btoa {#btoa}

Makro vērtības kodēšana Base64 kodējumā.
Base64 kodējums ir metode bināro datu attēlošanai teksta formā, kas ir noderīga bināra satura glabāšanai un drošai pārsūtīšanai, izmantojot uz tekstu balstītus protokolus.

Piemērs:

```default
{{ITEM.VALUE}.btoa()} - Base64 kodēs vērtību, piemēram, "zabbix", par "emFiYml4"
```

[comment]: # ({/d8d5fafe-6e2e93df})

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

Skaitļa formatēšana, lai kontrolētu pēc decimālpunkta izdrukāto ciparu skaitu.

Parametri:

-   **digits** - ciparu skaits aiz decimālpunkta.
Derīgais diapazons: 0-20.
Beigu nulles netiks pievienotas.

Piemēri:

```default
{{ITEM.VALUE}.fmtnum(2)} - atgriezīs "24.35" no saņemtās vērtības "24.3483523"
{{ITEM.VALUE}.fmtnum(0)} - atgriezīs "24" no saņemtās vērtības "24.3483523"
```

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

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

Laika formatēšana.<br>
Ņemiet vērā, ka šo funkciju var izmantot ar makrosiem, kas tiek atrisināti uz vērtību vienā no šādiem laika formātiem:

-   `hh:mm:ss`
-   `yyyy-mm-ddThh:mm:ss[tz]` (ISO8601 standarts)
-   UNIX laikspiedols

Parametri:

-   **format** - obligāta formāta virkne, kas ir saderīga ar `strftime` funkcijas formatēšanu;
-   **time\_shift** (neobligāts) - laika nobīde, kas tiek piemērota laikam pirms formatēšanas; tai jāsākas ar `-<N><time_unit>` vai `+<N><time_unit>`, kur:
    -   `N` - pievienojamo vai atņemamo laika vienību skaits;
    -   `time_unit` - h (stunda), d (diena), w (nedēļa), M (mēnesis) vai y (gads).

Komentāri:

-   Parametrs `time_shift` atbalsta daudzpakāpju laika operācijas un var ietvert `/<time_unit>`, lai pārbīdītu uz laika vienības sākumu
    (`/d` - pusnakts, `/w` - nedēļas 1. diena (pirmdiena), `/M` - mēneša 1. diena utt.).
    Piemēri: `-1w` - tieši 7 dienas atpakaļ; `-1w/w` - iepriekšējās nedēļas pirmdiena; `-1w/w+1d` - iepriekšējās nedēļas otrdiena.
-   Laika operācijas tiek aprēķinātas no kreisās uz labo pusi bez prioritātēm.
Piemēram, `-1M/d+1h/w` tiks interpretēts kā `((-1M/d)+1h)/w`.

Piemēri:

```default
{{TIMESTAMP}.fmttime(%B)} - atgriezīs "October" no saņemtās vērtības "1633098961"
{{TIMESTAMP}.fmttime(%d %B,-1M/M)} - atgriezīs "1 September" no saņemtās vērtības "1633098961"
```

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

[comment]: # ({d224cb43-e5cb24ab})
##### htmldecode {#htmldecode}

Makro vērtības dekodēšana no HTML kodējuma.

Tiek atbalstītas šādas rakstzīmes:

|Vērtība|Dekodētā vērtība|
|----|------|
|`&amp;`|`&`|
|`&lt;`|`<`|
|`&gt;`|`>`|
|`&quot;`|`"`|
|`&#039;`|`'`|
|`&#39;`|`'`|

Piemērs:

```default
{{ITEM.VALUE}.htmldecode()} - HTML dekodēs vērtību, piemēram, "&lt;" uz "<"
```

[comment]: # ({/d224cb43-e5cb24ab})

[comment]: # ({f78164e5-b0e6d63f})
##### htmlencode {#htmlencode}

Makro vērtības kodēšana HTML kodējumā.

Tiek atbalstītas šādas rakstzīmes:

|Vērtība|Kodētā vērtība|
|----|------|
|`&`|`&amp;`|
|`<`|`&lt;`|
|`>`|`&gt;`|
|`"`|`&quot;`|
|`'`|`&#39;`|

Piemērs:

```default
{{ITEM.VALUE}.htmlencode()} - HTML kodēs rakstzīmi, piemēram, "<", par "&lt;"
```

[comment]: # ({/f78164e5-b0e6d63f})

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

Apakšvirknes izvilkšana pēc atbilstības regulārajai izteiksmei (bez reģistra jutības).

Parametri:

-   **pattern** - regulārā izteiksme atbilstības noteikšanai;
-   **output** - izvades opcijas.
**\\1 - \\9** vietturi tiek atbalstīti tveršanas grupām.
**\\0** atgriež atbilstošo tekstu.

Komentāri:

-   Ja regulārajai izteiksmei nav atbilstības, funkcija atgriež tukšu virkni.
-   Ja funkcijas pattern ir nekorekta regulārā izteiksme, tad makro tiek novērtēts kā 'UNKNOWN' (izņemot zema līmeņa atklāšanas makro, kurā gadījumā funkcija tiks ignorēta un makro paliks neatrisināts).
-   Atsauces uz neeksistējošām tveršanas grupām aizvietošanas virknē tiek aizstātas ar tukšu virkni.

Piemērs:

```default
{{ITEM.VALUE}.iregsub("fail|error|fault|problem","ERROR")} - tiks atrisināts kā "ERROR", ja tiks saņemtas apakšvirknes "fail", "error", "fault" vai "problem" (bez reģistra jutības); atgriezīs tukšu virkni, ja nebūs atbilstības
```

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

[comment]: # ({9186768b-b7de9b23})
##### mazie burti {#lowercase}

Visu makro vērtības rakstzīmju pārveidošana par mazajiem burtiem.  
Darbojas ar viena baita rakstzīmju kopām (piemēram, ASCII) un neatbalsta UTF-8.

Piemērs:

```default
{{ITEM.VALUE}.lowercase()} - pārveidos tādu vērtību kā "Zabbix SERVER" par "zabbix server" (mazie burti)
```

[comment]: # ({/9186768b-b7de9b23})

[comment]: # ({2064b2f8-2d4d3410})
##### regrepl(pattern,replacement,<pattern2>,<replacement2>,...) {#regrepl}

Rakstzīmes/apakšvirknes aizstāšana makro vērtībā.

Parametri:

-   **pattern** - regulārā izteiksme atbilstības meklēšanai;
-   **replacement** - aizstāšanas virkne.
Aizstāšanas virknēs tiek atbalstīti vietturi **\\1 - \\9** grupu uztveršanai.

Komentāri:

-   Šabloni un aizstāšanas virknes tiek apstrādātas secīgi, katru nākamo pāri piemērojot atbilstoši iepriekšējās aizstāšanas rezultātam;
-   Atsauces uz neeksistējošām uztveršanas grupām aizstāšanas virknē tiek aizstātas ar tukšu virkni.

Piemēri:

```default
{{ITEM.VALUE}.regrepl("oldParam", "newParam")} - aizstās "oldParam" ar "newParam"
{{ITEM.VALUE}.regrepl("([^a-z])","\\\1")} - visas rakstzīmes, kas nav burti, tiks ekranētas ar slīpsvītru
{$THRESHOLD:"{{#FSNAME}.regrepl(\"\\$\",\"\")}"} - noņems beigu slīpsvītru (piemēram, lai aizstātu "C:\" ar "C:")
{{ITEM.VALUE}.regrepl("_v1\.0", "_v2.0", "\(final\)", "")} - aizstās vairākas daļas vienuma vērtībā
```

[comment]: # ({/2064b2f8-2d4d3410})

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

Apakšvirknes izvilkšana pēc atbilstības regulārajai izteiksmei (reģistrjutīga).

Parametri:

-   **pattern** - regulārā izteiksme atbilstības noteikšanai;
-   **output** - izvades opcijas.
**\\1 - \\9** vietturi tiek atbalstīti grupu uztveršanai.
**\\0** atgriež atbilstošo tekstu.

Komentāri:

-   Ja regulārajai izteiksmei nav atbilstības, funkcija atgriež tukšu virkni.
-   Ja funkcijas pattern ir nekorekta regulārā izteiksme, tad makro tiek novērtēts kā 'UNKNOWN' (izņemot zema līmeņa atklāšanas makro, kur šī funkcija tiks ignorēta un makro paliks neatrisināts).
-   Atsauces uz neeksistējošām uztveršanas grupām aizvietošanas virknē tiek aizstātas ar tukšu virkni.

Piemēri:

```default
{{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} - tiks atrisināts kā "Problem ID: 123", ja tiek saņemta vērtība, piemēram, "123 Log line"
{{ITEM.VALUE}.regsub("fail|error|fault|problem","ERROR")} - tiks atrisināts kā "ERROR", ja tiek saņemtas apakšvirknes "fail", "error", "fault" vai "problem" (reģistrjutīgi); atgriezīs tukšu virkni, ja atbilstības nav
```

Skatiet [vairāk piemēru](#additional-examples).

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

[comment]: # ({40e84cc5-d7660986})
##### tr(characters,replacement) {#tr}

Makro vērtības rakstzīmju transliterācija.

-   **characters** - aizstājamais rakstzīmju kopums;
-   **replacement** - pozicionāli atbilstošo aizstājējrakstzīmju kopums.

Piemēri:

```default
{{ITEM.VALUE}.tr(abc, xyz)} - aizstās visas "a" ar "x", "b" ar "y", "c" ar "z"
{{ITEM.VALUE}.tr(abc, xyzq)} - aizstās visas "a" ar "x", "b" ar "y", "c" ar "z" ("q" tiek ignorēts)
{{ITEM.VALUE}.tr(abcde, xyz)} - aizstās visas "a" ar "x", "b" ar "y", "c" ar "z", "d" ar "z", "e" ar "z" (t.i., xyzzz)
{{ITEM.VALUE}.tr("\\\'", "\/\"")} - aizstās visas atpakaļvērstās slīpsvītras ar slīpsvītru uz priekšu, vienpēdiņas ar dubultpēdiņām
{{ITEM.VALUE}.tr(A-Z,a-z)} - pārveidos visus burtus par mazajiem burtiem
{{ITEM.VALUE}.tr(0-9a-z,*)} - aizstās visus ciparus un mazos burtus ar "*"
{{ITEM.VALUE}.tr(0-9,ab)} - aizstās visas 0 ar "a", un aizstās visas 1, 2, 3, 4, 5, 6, 7, 8 un 9 ar "b"
{{ITEM.VALUE}.tr(0-9abcA-L,*)} - aizstās visus ciparus, "abc" rakstzīmes un diapazonu A-L ar "*"
{{ITEM.VALUE}.tr("\n","*")} - aizstās visas rindas beigu virknes ar *
{{ITEM.VALUE}.tr("e", "\n")} - aizstās visus "e" ar rindas beigu virkni
```

Lai iekļautu literālās rakstzīmes:

```default
atpakaļvērstā slīpsvītra - jāatveido kā \\
vienpēdiņa - jāatveido kā \'
dubultpēdiņa - jāatveido kā \"
```

Atbalstītās atsoļa secības ar atpakaļvērsto slīpsvītru:

```default
\\\\ => \\ - dubultā atpakaļvērstā slīpsvītra uz vienu atpakaļvērsto slīpsvītru
\\a  => \a - brīdinājuma signāls
\\b  => \b - atpakaļatkāpe
\\f  => \f - lapas pārtraukums
\\n  => \n - jauna rinda
\\r  => \r - kursora atgriešana
\\t  => \t - horizontālā tabulācija
\\v  => \v - vertikālā tabulācija
```

[comment]: # ({/40e84cc5-d7660986})

[comment]: # ({57ab4e3a-8315e479})
##### lielie burti {#uppercase}

Visu makro vērtības rakstzīmju pārveidošana par lielajiem burtiem.  
Darbojas ar viena baita rakstzīmju kopām (piemēram, ASCII) un neatbalsta UTF-8.

Piemērs:

```default
{{ITEM.VALUE}.uppercase()} - pārveidos vērtību, piemēram, "Zabbix Server", par "ZABBIX SERVER" (lielie burti)
```

[comment]: # ({/57ab4e3a-8315e479})

[comment]: # ({9f54b4cb-15465392})
##### urldecode {#urldecode}

Makro vērtības dekodēšana no URL kodējuma.

Piemērs:

```default
{{ITEM.VALUE}.urldecode()} - URL dekodēs tādu vērtību kā "%2F" par "/"
```

[comment]: # ({/9f54b4cb-15465392})

[comment]: # ({725aedc6-362f6ccf})
##### urlencode {#urlencode}

Makro vērtības kodēšana URL kodējumā.

Piemērs:

```default
{{ITEM.VALUE}.urlencode()} - URL kodēs rakstzīmi, piemēram, "/" uz "%2F"
```

[comment]: # ({/725aedc6-362f6ccf})

[comment]: # ({a95b22c2-148bfc16})
#### Papildu piemēri

Tālāk redzamajā tabulā ir parādīti vēl citi makro funkciju izmantošanas piemēri.

:::noteinfo
`{#IFALIAS}` ir [LLD makross](/manual/config/macros/lld_macros) un ir definēts tikai zema līmeņa atklāšanas kontekstos (atklāšanas noteikumos, prototipos un no tiem izveidotajos vienumos/trigeros). 
Izmantojot to ārpus LLD, tokens paliks neaizvietots.
:::

|Makro funkcija|Saņemtā vērtība|Izvade|
|-------------|----|-------------|
|`{{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*` (nederīga regulārā izteiksme)|
|`{{#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)}` (nederīga regulārā izteiksme)|
|`{$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)}"}` (nederīga regulārā izteiksme)|
|`"{$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)}\"}"` (nederīga regulārā izteiksme)|

##### Pilnu vienuma vērtību skatīšana

Atrisināto {ITEM.VALUE} un {ITEM.LASTVALUE} makrosu garās vērtības teksta/žurnāla vienumiem dažās lietotāja saskarnes vietās tiek saīsinātas līdz 20 rakstzīmēm.
Lai redzētu šo makrosu pilnās vērtības, varat izmantot makro funkcijas, piemēram:

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

Skatiet arī: {ITEM.VALUE} un {ITEM.LASTVALUE} [makrosu detalizēta informācija](/manual/appendix/macros/supported_by_location).

[comment]: # ({/a95b22c2-148bfc16})
