【发布时间】:2012-10-12 15:40:53
【问题描述】:
我有一个脚本可以远程登录到一个盒子,运行一个命令,然后保存输出。之后我运行另一个脚本,它解析输出文件,将其与位于另一个文件中的关键字进行比较以进行匹配。如果匹配了一行,它应该将整行(从原始 telnet 输出)保存到一个新文件中。
这是处理文本解析的脚本部分:
def parse_file
filter = []
temp_file = File.open('C:\Ruby193\scripts\PARSED_TRIAL.txt', 'a+')
t = File.open('C:\Ruby193\scripts\TRIAL_output_log.txt')
filter = File.open('C:\Ruby193\scripts\Filtered_text.txt').readlines
t.each do |line|
filter.each do |segment|
if (line =~ /#{segment}/)
temp_file.puts line
end
end
end
t.close()
temp_file.close()
end
目前,它只保存位于数组filter 中的最后一个运行字符串并将其保存到temp_file。看起来循环没有运行数组中的所有字符串,或者没有全部保存。我在文本文件Filtered_text.txt 中放置了五个字符串。它只会将我最后匹配的行打印到temp_file。
【问题讨论】:
-
您是在寻找子字符串匹配,还是整个单词?目前,您将获得子字符串匹配,并且您将跳过任何与字符大小写不匹配的潜在命中。
标签: ruby arrays string compare telnet