I have such a question, when i open a file doing some grep stuff...
···
---
File.open('aa.xml').each do |line|
dev_name = ARGV[1]
if line =~ /<prf:CcppAccept>/..line =~ /<\/prf:CcppAccept>/
if line =~ /<rdf:li>(image|audio|video).*<\/rdf:li>/
line.gsub('<rdf:li>image/jpeg', "INSERT INTO VMPOLICY_VALUES
VALUES(\'#{dev_name}\',\'jpginpage\',\'true\',\'#{$ver}\')")).gsub(
"<\/rdf:li>", ";").each do |ss|
----
I recive output like
INSERT INTO TABLE VALUES(1,1,1)
INSERT INTO TABLE VALUES(1,2,2)
INSERT INTO TABLE VALUES(1,1,1)
now i wanted to put only that lines which are uniqe...
INSERT INTO TABLE VALUES(1,1,1)
INSERT INTO TABLE VALUES(1,2,2)
I have such a question, when i open a file doing some grep stuff...
---
File.open('aa.xml').each do |line|
dev_name = ARGV[1]
if line =~ /<prf:CcppAccept>/..line =~ /<\/prf:CcppAccept>/
if line =~ /<rdf:li>(image|audio|video).*<\/rdf:li>/
line.gsub('<rdf:li>image/jpeg', "INSERT INTO VMPOLICY_VALUES
VALUES(\'#{dev_name}\',\'jpginpage\',\'true\',\'#{$ver}\')")).gsub(
"<\/rdf:li>", ";").each do |ss|
----
I recive output like
INSERT INTO TABLE VALUES(1,1,1)
INSERT INTO TABLE VALUES(1,2,2)
INSERT INTO TABLE VALUES(1,1,1)
now i wanted to put only that lines which are uniqe...
INSERT INTO TABLE VALUES(1,1,1)
INSERT INTO TABLE VALUES(1,2,2)
That works only if the input is ordered. For unordered input here's an efficient way:
require 'set'
unique = Set.new
File.foreach('aa.xml') do |line|
x = ... line ...
puts x if unique.add? x
end
Of course you can also use a Hash for this.
unique = {}
File.foreach('aa.xml') do |line|
x = ... line ...
unique.fetch x do
unique = true
puts x
end
end
Btw, since your input appears to be XML it's probably a better idea to process it with XML tools like REXML and the like.
Kind regards
robert
···
On 20.12.2009 12:50, beny 18241 wrote:
beny 18241 wrote:
Hi all,
I have such a question, when i open a file doing some grep stuff...
---
File.open('aa.xml').each do |line|
dev_name = ARGV[1]
if line =~ /<prf:CcppAccept>/..line =~ /<\/prf:CcppAccept>/
if line =~ /<rdf:li>(image|audio|video).*<\/rdf:li>/
line.gsub('<rdf:li>image/jpeg', "INSERT INTO VMPOLICY_VALUES
VALUES(\'#{dev_name}\',\'jpginpage\',\'true\',\'#{$ver}\')")).gsub(
"<\/rdf:li>", ";").each do |ss|
----
I recive output like
INSERT INTO TABLE VALUES(1,1,1)
INSERT INTO TABLE VALUES(1,2,2)
INSERT INTO TABLE VALUES(1,1,1)
now i wanted to put only that lines which are uniqe...
INSERT INTO TABLE VALUES(1,1,1)
INSERT INTO TABLE VALUES(1,2,2)