Ruby,如何将一个文件中的字符串与另一个文件匹配并打印匹配的字符串

时间:2014-03-19 19:52:31

标签: ruby arrays matching

我有两个文件。文件1:

ruby,amazing,awesome

file2的:

ruby-443-543-fx\n
amazing-122-454-nx\n
hello-432-544-lx\n
awesome-522-65-nx\n

如何运行搜索以将file1单词与file2行匹配(例如,从file1惊人地匹配惊人的122-454-nx)?然后,我需要打印匹配的结果如下:

ruby-443-543-fx\n
amazing-122-454-nx\n
awesome-522-65-nx\n

2 个答案:

答案 0 :(得分:1)

如果您将file1转换为要搜索的单词的每行一个列表,则可以使用友好的Unix-y搜索工具grep

grep -f file1 file2

这肯定比你在Ruby中构建的任何东西都要快。

如果要从结果中删除换行符,可以使用tr命令执行此操作,如下所示:

grep -f file1 file2 | tr -d "\n"

答案 1 :(得分:0)

以这种方式:

words = File.read("file1.txt").strip.split(/,/)
words_regex = Regexp.union(words)

File.open("file2.txt").each do |line|
    puts line if line =~ words_regex
end

输出:

ruby-443-543-fx
amazing-122-454-nx
awesome-522-65-nx