Ruby筛选器gsub替换\\n
我想用“\n”替换“\\n” 我正在使用gsub方法,但无法替换Ruby筛选器gsub替换\\n,ruby,
elasticsearch,logstash,kibana,Ruby,
elasticsearch,Logstash,Kibana,我想用“\n”替换“\\n” 我正在使用gsub方法,但无法替换 ruby { code => "@mystring=event.get('stockLines'); @mystring=@mystring.gsub('\\\n', '\n');" } 反斜杠的转义可能有点奇怪 对于常规Ruby脚本,代码为: @mystring = event.get('stockLines').gsub('\\\\\n', '\n') 在logstash配置中,代码似乎也是字符串,因此需要再次转
ruby
{
code => "@mystring=event.get('stockLines');
@mystring=@mystring.gsub('\\\n', '\n');"
}
反斜杠的转义可能有点奇怪 对于常规Ruby脚本,代码为:
@mystring = event.get('stockLines').gsub('\\\\\n', '\n')
在logstash配置中,代码似乎也是字符串,因此需要再次转义,即:
ruby
{
code => "@mystring = event.get('stockLines').gsub('\\\\\\\\\\n', '\\n');"
}
您需要在gsub中使用“\n”而不是“\n”。不同的引号表现不同
就你而言:
@mystring.gsub("\\n", "\n")
字符串的两种文字形式(单引号或双引号)的本质区别在于双引号允许转义序列,而单引号不允许 我试过这个,但它不能代替。你确定你是说gsub!。不是gsub。
gsub代码>就地替换<代码>@mystring.gsub!(...);
与执行@mystring=@mystring.gsub(…)相同代码>。我两个都试过了,但都没有替换。我在字符串中得到了相同的\\n。ruby-e“foo=”\foo;puts foo;puts foo.gsub(“'\code>,'\n')””
——对我很有用。我正在用问题中提到的logstash脚本编写。它不在那里工作。我不明白为什么除了“ruby”之外还有三个标签在那里。如果它们不相关——我不明白为什么它们会相关——就不应该包括在内。标签用于帮助搜索。如果一位成员想检查有关(例如,logstash
)的问题,他们会想看到这个问题吗?