帮助请执行以下内容: 目录中有很多.log文件,它们需要在Excel表中只读取并显示所需的行,即:
Blade 11
Model: ProLiant BL460c Gen9
Manufacturer: HP
Serial Number: XXXXXXXXX
Part Number: 727021-B21
Spare Part Number: 820254-001
Mezz 1
Model: HP QMH2672 16Gb FC HBA for BladeSystem c-Class
Manufacturer: QLogic
Serial Number: MY56140NML
PCA Serial Number: MY56140NML
Part Number: 710608-B21
Spare Part Number: 711305-001
Product Ver:
Adaptive Fabric Adapter 1
Model: HP FlexFabric 10Gb 2-port 536FLB Adapter
Manufacturer: HP
Serial Number: 7C453705WV
PCA Serial Number: 7C453705WV
Part Number: 766490-B21
Spare Part Number: 768080-001
Product Ver: 00
有必要在Excel' Blade':
中显示一个表格Blade | Model | Manufacturer | Serial Number | Part Number | Spare Part Number
11 ProLiant HP CZJ42800G4 XXXXXXXXX 820254-001
12 ProLiant HP CZJ42800G5 XXXXXXXXX 820254-002
服务器有Ruby,PHP,Perl。 还有sed和awk的选项吗?
好的我尝试以这种方式实现,但我不理解操作的算法:
require 'find'
require 'spreadsheet'
dirs = []
filelog = []
workbook = Spreadsheet::Workbook.new
heading = Spreadsheet::Format.new(:weight => :bold, :size =>10, :border => :thin, :align => :merge, :pattern_fg_color => :green, :pattern => 1)
normal = Spreadsheet::Format.new(size: 10)
worksheet = workbook.create_worksheet name: 'Blade_name'
heading_row = worksheet.row(0)
heading_row.set_format(0, heading)
heading_row.set_format(1, heading)
heading_row.set_format(2, heading)
heading_row.set_format(3, heading)
heading_row.set_format(4, heading)
worksheet.row(0).concat(['Blade name', 'Model', 'Manufacturer', 'Part Number', 'Spare Part Number'])
worksheet.column(0).width=70
worksheet.column(1).width=19
worksheet.column(2).width=35
worksheet.column(3).width=19
worksheet.column(4).width=15
# Find.find("/home/web/projects/get_log") do |f|
# if FileTest.directory?(f)
# dirs.push(f)
# else
# filelog.push(f)
# $stderr = File.open(filelog, "a+")
# end
# end
$stderr = File.open('1.log', "a+")
match = line.match('Blade')
if match.nil?
else
@results << convert_to_hash(match)
puts @results
end
如何计算每一行并与Blade比较,我不知道=( 或者通过正则表达式?
答案 0 :(得分:0)
tags = %w|Blade Model:
Manufacturer:
Serial\ Number:
Part\ Number:
Spare\ Part\ Number:|.map { |t| ".*?#{t}\s+(.*)\n" }.join
input.scan(%r|#{tags}|)
#⇒ [
# [0] [
# [0] "11",
# [1] "ProLiant BL460c Gen9",
# [2] "HP",
# [3] "CZJ42800G5",
# [4] "710608-B21",
# [5] "820254-001"
# ],
# [1] [
# [0] "12",
# [1] "ProLiant BL460c Gen9",
# [2] "HP",
# [3] "CZJ42800G5",
# [4] "727021-B21",
# [5] "820254-002"
# ]
# ]
现在只需使用生成的数组构建CSV / XLS。