若Ruby脚本中包含忽略行,如何改写为长尾?

2026-04-11 18:131阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计524个文字,预计阅读时间需要3分钟。

若Ruby脚本中包含忽略行,如何改写为长尾?

首先,让我道歉,因为我不知道Ruby。我可以阅读代码并了解最新情况,但自从我没有编写过任何代码。我有一个脚本,我们用它来解析我们很长时间以前从某人那里获得的一些日志文件。

首先,让我道歉,因为我不知道ruby.我可以阅读代码并了解最新情况,但从未编写任何代码.

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

若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

本文共计524个文字,预计阅读时间需要3分钟。

若Ruby脚本中包含忽略行,如何改写为长尾?

首先,让我道歉,因为我不知道Ruby。我可以阅读代码并了解最新情况,但自从我没有编写过任何代码。我有一个脚本,我们用它来解析我们很长时间以前从某人那里获得的一些日志文件。

首先,让我道歉,因为我不知道ruby.我可以阅读代码并了解最新情况,但从未编写任何代码.

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

若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