我在目录中有多个文件,它们有重复的记录。对于相同的值,可以有多个副本。
sample.txt的
#My first file created on Tuesday
[active]
row = org\xcfte, org\hrxen
speed = org\hrxen, org\kiopm7, org\0987hy
col = org\lop09k, org\0987hy
sample_2.txt
#My second file created on Wednesday
[active]
row = org\xcfte, org\0okilh
speed = org\hrxen, org\0okilh
col = org\0987hy
等多个文件
预期输出
sample:
org\xcfte
org\hrxen
org\kiopm7
org\0987hy
org\lop09k
sample_2:
org\xcfte
org\0okilh
org\hrxen
org\0987hy
从第一个文件 - org \ hrxen和org \ 0987hy应该只出现一次,从第二个文件'org \ 0okilh'出现一次。
我试过
lines = File.read('/path/to/file')
lines.split("\n").uniq.join("\n")
以及
File.readlines("*.txt").uniq
但不会删除重复的条目
答案 0 :(得分:1)
我已经尝试了最后一个File.readlines("file.txt").uniq
并且它在这种文件中工作得非常好:
file.txt的
org\xcfte
org\hrxen
org\hrxen
org\kiopm7
org\0987hy
org\0987hy
org\lop09k
此处的工作是正确解析您的文件,因为在此类文件上执行File.readlines("file.txt").uniq
...
[active]
row = org\xcfte, org\0okilh
speed = org\hrxen, org\0okilh
col = org\0987hy
...永远不会打印您的预期输出
修改这是一个适合我的解决方案
array = []
file = File.read('file')
file.split(' ').each do |line|
# I push the line if it is not already inside the array and if it contains the substring "org"
formated = line.gsub(',', '')
array.push(formated) unless array.include? formated or !line.include? "org"
end
puts array
样本1的输出:
org\xcfte
org\hrxen
org\kiopm7
org\0987hy
org\lop09k