加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

帮助ruby脚本,(如果包含行,忽略)

发布时间:2020-12-17 01:28:32 所属栏目:百科 来源:网络整理
导读:首先,让我道歉,因为我不知道ruby.我可以阅读代码并了解最新情况,但从未编写任何代码. 我有一个脚本,我们用来解析我们很久以前从某人那里获得的一些日志文件. # format the csv data into an sql insert querydef FormatToSQL(file_name) $logger.info(caller
首先,让我道歉,因为我不知道ruby.我可以阅读代码并了解最新情况,但从未编写任何代码.

我有一个脚本,我们用来解析我们很久以前从某人那里获得的一些日志文件.

# format the csv data into an sql insert query
def FormatToSQL(file_name)
  $logger.info(caller) { "creating SQL insert q's" }
  formatted_data = []
  data_lines = []
  open("#{LOCAL_DIR}/#{file_name}") { |f| data_lines = f.readlines }
  data_lines.each do |r|
    data = []
    rdata = r.split(' ')
    rdata.each { |e| data.push("'#{e}'") }
    data.unshift('DEFAULT')
    sql_data = data.join(',')
    formatted_data.push(sql_data)
  end
  return(formatted_data)
end
# -------------------------------------------------------------------
# -------------------------------------------------------------------
# M  A   I    N

$logger = Logger.new("//var/www/metaquery/calllogger.log",3,1024000)
$logger.info(caller) { "start" }
now = Time.now().gmtime() - 3600  ## files are name using UTC
file_name = sprintf("calllog_%s_%02d_%02d_%02d.log",now.year,now.month.to_i,now.day.to_i,now.hour.to_i)
if(doSFTPPull(file_name)) then
  ConnectDB()
  formatted_sql = FormatToSQL(file_name)
  formatted_sql.each { |sql| $local_conn.query("insert into #{DB_TABLE} values(#{sql})") }
else
  # we did not download the new file,report to ???
  false
end
$logger.info(caller) { "normal end" }
# -------------------------------------------------------------------

该日志包含数千行记录,如此

2xx3xx2xx7 2xx3xx56xx 07/28/11.19:55:45 19:55:46 20:00:00 2 4092 - - N - - TER - A T -

但是,我们启用了一些新的QoS统计信息,并添加了这样的行,

VQM: 2xx3xx00xx 08/12/11.13:02:07 - - - - 20ms 0 0

我想添加一个语句来忽略以VQM开头的任何行,因为这会在MySQL Inserts上抛出列数,最终导致查询失败,从而导致脚本失败.

我怎么会这样做?再次,抱歉成为一个完整的Noob与Ruby.我只是一个PHP家伙,甚至不擅长.大声笑

我知道,该地区可能必须在
????data_lines.each do | r |

代码将在哪里,并且可能是if / then与一些正则表达式.谢谢你的帮助!

解决方法

尝试类似的东西:

data_lines.each do |r|
  next if r.match(/^VQM/) #will skip this one if the line starts VQM
  #everything else as before
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读