Logstash Ruby 无效的转义符语法
Logstash Ruby Invalid escape character syntax
我必须用 ruby:
来解析这类日志
test = "LogicalDisk\C:\% Free Space=40.04815, LogicalDisk\C:\Free Megabytes=32606, LogicalDisk\E:\% Free Space=91.81561, LogicalDisk\E:\Free Megabytes=18802, LogicalDisk\F:\% Free Space=n/a, LogicalDisk\F:\Free Megabytes=n/a, LogicalDisk\HarddiskVolume1\
但是给我这个错误:
main.rb:2: Invalid escape character syntax
test = "LogicalDisk\C:\% Free Space=40.04815, Logic
^
此日志是使用 logstash 从数据库中提取的,我无法使用 gsub 替换无效字符,因为 ruby 读取字符串时出现错误,并在此处停止。
我该怎么做才能解决这个问题?
我不确定我是否完全理解你的用例,但如果你正在做一些事情,比如直接从一个位置手动复制和粘贴到你的 Ruby 代码中,那么你可以使用分隔输入来定义你的字符串,比如这个:
string= %q{LogicalDisk\C:\% Free Space=40.04815, LogicalDisk\C:\Free Megabytes=32606, LogicalDisk\E:\% Free Space=91.81561, LogicalDisk\E:\Free Megabytes=18802, LogicalDisk\F:\% Free Space=n/a, LogicalDisk\F:\Free Megabytes=n/a, LogicalDisk\HarddiskVolume1\ }.strip
您正在做的是使用大括号作为分隔符而不是使用引号来定义字符串。您的示例的主要问题是尾随反斜杠,当 Ruby 尝试转换为字符串时,它将取消结束引号。为了解决这个问题,我在定界符内放置了一个尾随 space ,然后使用 strip 方法将其删除。您还可以选择添加第二个尾随反斜杠以取消第一个反斜杠。
我必须用 ruby:
来解析这类日志test = "LogicalDisk\C:\% Free Space=40.04815, LogicalDisk\C:\Free Megabytes=32606, LogicalDisk\E:\% Free Space=91.81561, LogicalDisk\E:\Free Megabytes=18802, LogicalDisk\F:\% Free Space=n/a, LogicalDisk\F:\Free Megabytes=n/a, LogicalDisk\HarddiskVolume1\
但是给我这个错误:
main.rb:2: Invalid escape character syntax
test = "LogicalDisk\C:\% Free Space=40.04815, Logic
^
此日志是使用 logstash 从数据库中提取的,我无法使用 gsub 替换无效字符,因为 ruby 读取字符串时出现错误,并在此处停止。
我该怎么做才能解决这个问题?
我不确定我是否完全理解你的用例,但如果你正在做一些事情,比如直接从一个位置手动复制和粘贴到你的 Ruby 代码中,那么你可以使用分隔输入来定义你的字符串,比如这个:
string= %q{LogicalDisk\C:\% Free Space=40.04815, LogicalDisk\C:\Free Megabytes=32606, LogicalDisk\E:\% Free Space=91.81561, LogicalDisk\E:\Free Megabytes=18802, LogicalDisk\F:\% Free Space=n/a, LogicalDisk\F:\Free Megabytes=n/a, LogicalDisk\HarddiskVolume1\ }.strip
您正在做的是使用大括号作为分隔符而不是使用引号来定义字符串。您的示例的主要问题是尾随反斜杠,当 Ruby 尝试转换为字符串时,它将取消结束引号。为了解决这个问题,我在定界符内放置了一个尾随 space ,然后使用 strip 方法将其删除。您还可以选择添加第二个尾随反斜杠以取消第一个反斜杠。