Ruby:如何从数组中删除重复的行?

不安全的信息技术

我可能没有使用正确的术语,但是在这里..

我在仪表板应用程序上显示IPS警报,并且有很多重复的行。例如,如果一个脚本小子试图强行使用RDP服务器,则我可能会收到150个警报,但可以减少到大约5个,因为这就是他们要处理的主机数。因此,我试图删除重复的警报,并且希望使用sid,src_addr和dst_addr作为我的指标来确定它们是否重复。

目前,我@filtered_snort_detail_query使用以下代码显示

This is my view

<% if @filtered_snort_detail_query.count > 0 %>
  <table>
      <tr>
        <th>Timestamp</th>
        <th>Tag Info</th>
        <th>Message</th>
      </tr>
      <% @filtered_snort_detail_query.each do |d|
        text_msg = d['_source']['message']
        if d['_source']['message'].nil?
        end
      %>
          <tr>
            <td class='timestamp'><%= d['_source']['@timestamp'].to_time %></td>
            <td class='tags'><%= d['_source']['tags'] %></td>
            <td class='message'><%= text_msg %></td>
          </tr>
      <% end %>

    </table>
<% else %>
    <div> No Results Returned. </div>
<% end %>

Here is my controller

    if @es_snort_detail_query.count > 0
      @filtered_snort_detail_query = Array.new
      @es_snort_detail_query.each do |ips_detail|
        next if ips_detail['_source']['type'] != 'snort-ips'
        next if ips_detail['_source']['@timestamp'] < @ts
        @filtered_snort_detail_query.push(ips_detail)
      end
     end

我认为这是我需要做的工作,以获取比较控制器中各行所需的指标。我只是不确定@filtered_snort_detail_query使用以下参数查看每行并构建新数组以在视图中显示的最佳方法

告诉我所有行,但如果sid_datasrc_ip_datadst_ip_data发生两次或更多次。

    if @es_snort_detail_query.count > 0
      @filtered_snort_detail_query = Array.new
      @es_snort_detail_query.each do |ips_detail|
        next if ips_detail['_source']['type'] != 'snort-ips'
        next if ips_detail['_source']['@timestamp'] < @ts
        @filtered_snort_detail_query.push(ips_detail)
      end
      if @filtered_snort_detail_query.count > 0
        ip_src = Array.new
        ip_dst = Array.new
        sid = Array.new
        @filtered_snort_detail_query.each do |find_ip, find_sid|
          unless find_ip.nil?
            sid_data = find_sid.scan(/\[\d+\:\d+\:\d+\]/)
            src_ip_data = find_ip.scan(/(?:[0-9]{1,3}\.){3}[0-9]{1,3}/)
            dst_ip_data = find_ip.scan(/(?:[0-9]{1,3}\.){3}[0-9]{1,3}/)
            sid.push(sid_data[0]) unless sid_data[0].nil?
            ip_src.push(src_ip_data[0]) unless src_ip_data[0].nil?
            ip_dst.push(dst_ip_data[1]) unless dst_ip_data[1].nil?
          end

        end
      end
    end
罗宾

对不起,如果我误解了这个问题。

如果数组中有一堆对象,并且要根据其属性的子集删除重复项,则可以将该uniq方法与块配合使用:

queries.uniq do |query|
  [query.sid_data, query.src_ip_data, query.dst_ip_data]
end

它将基于在块中创建的数组比较查询,并删除重复项。


转到http://www.compileonline.com/execute_ruby_online.php,复制并粘贴以下代码,然后单击左上角的执行脚本。

queries = [
  { :a => "ab", :b => "ba" },
  { :a => "ab", :b => "xy" },
  { :a => "xy", :b => "xy" }
]

unique_queries = queries.uniq do |q|
  q[:a]
end

puts unique_queries

看?仅根据:a密钥的值进行比较这是相同的原则。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何删除数组Ruby中的重复项

来自分类Dev

如何删除数组中重复的行ID

来自分类Dev

从Ruby数组中删除顺序重复项

来自分类Dev

在Ruby数组中删除冗余或重复的元组

来自分类Dev

从多维对象数组[,]中删除重复的行?

来自分类Dev

javascript - 从数组中删除完全重复的行

来自分类Dev

如何从数组中删除重复的数字?

来自分类Dev

如何从数组列表中删除重复的文件

来自分类Dev

如何从多维数组中删除重复条目?

来自分类Dev

如何从数组中删除重复点?

来自分类Dev

如何删除数组中的重复项?

来自分类Dev

Ruby删除哈希数组中的重复条目,但基于多个值

来自分类Dev

如何从联接中删除重复的行(SQL)

来自分类Dev

如何在Oracle中删除重复的行

来自分类Dev

如何从dolphindb表中删除重复行?

来自分类Dev

如何删除列行中的重复条目?

来自分类Dev

如何在SQL中删除重复行?

来自分类Dev

如何从文件中删除重复的行?

来自分类Dev

如何删除SQL中的重复行?

来自分类Dev

如何删除文件中特定的重复行?

来自分类Dev

如何从行中删除重复的号码?

来自分类Dev

如何删除在Mysql中重复的行

来自分类Dev

如何删除输出中的重复行?

来自分类Dev

如何删除 SQL Server 中的重复行

来自分类Dev

如何从嵌套列表中删除重复的行?

来自分类Dev

如何从kartik GridView中删除重复行?

来自分类Dev

如何删除MySQL表中的重复行?

来自分类Dev

如何从Ruby数组中删除双引号?

来自分类Dev

如何从基于第一列的数组中删除重复的行。