我需要使用正则表达式提取元素。
首先我从一个函数读取一个文件,然后从第二个函数读取另一个文件并提取一个值。
在处理第二个函数的读取时,我从第一个文件中 grep 值:
#function read file
def get_file_as_string(filename)
data = ''
f = File.open(filename, "r")
f.each_line do |line|
data += line
end
return data
end
主要的:
file.each do |filename|
lunsrvfile = 'server_lun.csv'
ldev = get_file_as_string lunsrvfile
f=File.read(filename)
lunid = f.scan(/^"No.","time","(\h+:\h+:\h+).*/).flatten #it's ok: ex: 00:02:00
if (ldev =~ /#{lunid}/) then
server = ldev.lines.grep(lunid) #--> don't work
#server = %x[grep lunid 'server_lun.csv' |awk -F ";" '{print $1}'] #--> don't work
puts filename
puts lunid
puts server
end
end
server_lun.csv:
server1;00:02:00
server2;00:03:25
server3;00:03:26
谢谢你的回答:
是的,我已经测试过了,但是当我把
server = ldev.lines.grep(/#{lunid}/)
列出了所有文件(lunsrvfile)。
如果匹配,我需要第一个值:例如 server1
谢谢你的回答2:
但有:
server = ldev.grep(/#{lunid}/).first.split(';').first
只有第一个 server1 是打印的。
输出:
filename1
lunid1
server1
filename2
lunid2
server1
(...)