替换字符串操作时出现格式错误

Got malformed error when do replace string manipulation

我正在跟踪来自 splunk 本身的字符串 manipulation docs

  1. SPL2 example Returns the "body" field with phone numbers redacted.

...| eval body=replace(cast(body, "string"), /[0-9]{3}[-.][0-9]{3}[-.][0-9]{4}/, "<redacted>");

但是当我尝试查询时

... | eval hostname=replace(cast(hostname, "string"), /cron*/, ""); | ..

我收到错误 Error in 'eval' command: The expression is malformed. An unexpected character is reached at '/cron*/, "a");'.

我很困惑,我做错了什么?

更新: 字符串示例:

我的目标是删除 cron-<random_id>

每个不同版本的 Splunk 可能有不同的功能可供使用。请根据您使用的Splunk版本参考文档。

试试这个:

... | eval hostname=replace(toString(hostname), "/cron*/", "") | ..

如果您使用 Splunk 7.3.1

,这里有一些链接可能会对您有所帮助

您正在查看 Splunk 数据流处理器 (DSP) 的文档,它不是 Splunk Enterprise。 DSP 是一种将数据导入 Splunk Enterprise(除其他外)的高级方法。您很可能在 Splunk Enterprise 中进行搜索,相关文档位于 https://docs.splunk.com/Documentation/Splunk

如果您尝试重命名字段的一部分并将其替换为空,则需要使用 replace 命令

... | eval hostname=replace(hostname, "cron*", "") | .. 

例如,| makeresults | eval hostname="cronmaster.acme.com" | eval hostname=replace(hostname, "cron", "") 将从 cronmaster.acme.com

中删除 cron

Post 字符串示例以及您希望将其转换成什么,我们可以确认替换是否足够,或者是否需要正则表达式。

您可以使用相同的命令,但使用不同的正则表达式。以下查找 -cron- 后跟任何 non-whitespace 个字符,由 \S+.

表示
| makeresults | eval hostname="pods-name-cron-3829hr832" | eval hostname=replace(hostname, "-cron-\S+", "")