

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# parse
<a name="CWL_QuerySyntax-Parse"></a>

Wird verwendet`parse`, um Daten aus einem Protokollfeld zu extrahieren und extrahierte Felder zu erstellen, die Sie in Ihrer Abfrage verarbeiten können. Der `parse` Befehl unterstützt drei Modi: Glob-Ausdrücke, reguläre Ausdrücke und logfmt.

Wenn weggelassen `fieldName` wird, `@message` wird es standardmäßig verwendet. Sie können aus jedem benannten Feld eine Analyse durchführen, indem Sie den Feldnamen als erstes Argument angeben.

Wenn ein Protokollereignis nicht dem angegebenen Muster entspricht, wird es immer noch in den Ergebnissen angezeigt, jedoch ohne die extrahierten Felder.

## Glob-Modus
<a name="CWL_QuerySyntax-parse-glob"></a>

Verwenden Sie Platzhalter (`*`) als Platzhalter für Werte, die Sie extrahieren möchten, und weisen Sie sie benannten Feldern zu. `as`

**Syntax**

```
parse {{fieldName}} "{{pattern}}" as {{alias1}}, {{alias2}}
```

Die Anzahl der `*` Platzhalter muss der Anzahl der Aliase entsprechen.

**Beispiele**

```
parse @message "user=*, method:*, latency := *" as @user,
    @method, @latency | stats avg(@latency) by @method, @user
```

```
parse @logStream "*/*/*/*" as env, service, instance, shard
| stats count(*) by env, service
```

**Verkettete Analyse**

Extrahieren Sie ein Feld und analysieren Sie das extrahierte Feld anschließend weiter.

```
parse @message "url=*" as url
| parse url "/api/*/users/*" as apiVersion, userId
| display apiVersion, userId
```

## Regex-Modus
<a name="CWL_QuerySyntax-parse-regex"></a>

Verwenden Sie einen regulären Ausdruck mit benannten Capture-Gruppen, um Felder zu extrahieren. Hinweise zur Syntax regulärer Ausdrücke finden Sie unter[Unterstützte Syntax für reguläre Ausdrücke (Regex)](FilterAndPatternSyntax.md#regex-expressions).

**Syntax**

```
parse {{fieldName}} /{{regex}}/
```

Verwenden Sie benannte Capture-Gruppen`(?<{{name}}>...)`, um extrahierte Felder zu definieren.

**Beispiele**

**Verwenden Sie benannte Erfassungsgruppen, um Felder zu extrahieren**

```
parse @message /user=(?<user2>.*?), method:(?<method2>.*?),
    latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2,
    @user2
```

**Verwenden Sie eine benannte Capture-Gruppe, um die ENI aus einem VPC-Flow-Protokoll zu extrahieren**

```
parse @message /(?<NetworkInterface>eni-.*?) /
| display NetworkInterface, @message
```

## Logfmt-Modus
<a name="CWL_QuerySyntax-parse-logfmt"></a>

Wird verwendet`parse logfmt`, um Logzeilen im Logfmt-Format in Schlüssel-Wert-Paare zu zerlegen. Logfmt ist ein strukturiertes Logging-Format, bei dem jede Zeile durch Leerzeichen getrennte Paare enthält. `key=value`

**Syntax**

```
parse {{fieldName}} logfmt as {{alias}}
```

Das Ergebnis ist eine Map, auf die Sie mit Punktnotation zugreifen (z. B.,`lf.level`). `lf.msg`

**Beispiele**

```
parse @message logfmt as lf
| filter lf.level = "error"
| display lf.msg, lf.duration
```

```
parse @message logfmt as lf
| stats count(*) by lf.host
```